
On 2/2/2010 3:40 PM, David A. Greene wrote:
somewhere in the guts of proto there's an expectation that wrappers have one template argument.
Yes, it's proto::pod_generator. You have this: // Expression wrapper template<class Expr, class Dummy = boost::proto::is_proto_expr> struct Wrapper { BOOST_PROTO_EXTENDS(Expr, Wrapper<Expr>, Domain) }; ... struct Domain : boost::proto::domain<boost::proto::pod_generator<Wrapper > > {}; pod_generator is documented as taking a single template template parameter, as follows: template<template<typename> class Extends> struct pod_generator The extra template parameter to Wrapper is not strictly necessary AFAICS, so perhaps you can just drop it. If not, you can define your own generator. It just needs to be a unary function object. See how pod_generator is defined. HTH, -- Eric Niebler BoostPro Computing http://www.boostpro.com