> On 2/12/2011 7:17 AM, Nate Knight wrote:
>> I see in the Proto documentation a trick for getting the Proto operator
>> overloads found by ADL using something like
>>
>> template<class T, class Dummy = proto::is_proto_expr>
>> struct my_complex
>> {
>> BOOST_PROTO_EXTENDS(
>> typename proto::terminal<std::complex<T> >::type
>> , my_complex<T>
>> , proto::default_domain
>> )
>> };
>>
>> The proto::pod_generator class template, however, expects its argument to be
>> a one argument class template.
>> So, something like
>>
>> struct my_domain : proto::domain< proto::pod_generator< my_complex> > {};
>>
>> won't work because my_complex is a two argument class template (even though
>> its got one default argument).
>
> It wouldn't work anyway because pod_generator expects that it's
> argument's template parameter is a Proto expression. my_complex's
> template argument is (presumably) a scalar. Generators are for wrapping
> bare expressions in custom wrappers. my_complex is already a wrapped
> Proto expression.
> Eric, thanks for the response. I think I misunderstood the intent of these comments in the documentation. I have some external non-proto terminals I've adapted using BOOST_PROTO_DEFINE_OPERATORS. I was trying to figure out how to get the terminals picked up by the operator overloads without importing them all from the namespace they are defined in every time I wanted to build an expression. I just needed to make sure my terminals were tied to the namespace in which I put the BOOST_PROTO_DEFINE_OPERATORS. I think I'm starting to figure this out, but I'm sure I'm going to have a few more mixups before I'm done.
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ proto mailing list [email protected] http://lists.boost.org/mailman/listinfo.cgi/proto
