> 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.


Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
proto mailing list
proto@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/proto

Reply via email to