"Johan Nilsson"
I've experimented some with defining a parameter::parameters specification and use (the undocumented) BOOST_PARAMETER_MEMFUN, but that obviously doesn't work (forwarding, return values and constructors don't mix).
Generally you have to forward the overloaded constructors to a base class constructor that takes the ArgumentPack and does all the "real" work. IOW, you may need to insert a base class in the hierarchy just for the purpose of construction.
It should be possible (I think) to define a BOOST_PARAMETER_CTOR macro that generate the ctor overloads and forwards to a setter method instead of the other way around.
It won't be general enough to initialize constant or reference members.
2. Is there a way of detecting whether an argument was passed using position or name?
Nope.
Or, even better, is there a way of restricting the arguments to only be passed by name using the parameters specification?
Nope. Why do you want to do that?
3. Not a question really, but having a default arity of 5 seems awfully low to me. I hit that limit on first usage, and as the named parameters are supposed to be used in the interface of my wrapping library, forcing users to define BOOST_PARAMETER_MAX_ARITY "globally" feels a bit like asking for someone coming up and asking me to decode some compile errors.
Reasonable point. Daniel, what do you think? -- Dave Abrahams Boost Consulting www.boost-consulting.com