#include namespace foo { BOOST_PARAMETER_NAME(arg1) BOOST_PARAMETER_NAME(arg2) template struct base { template base(ArgPack const & args) : val1(args[_arg1]) , val2(args[_arg2]) {} int val1,val2; }; template struct derived : base { BOOST_PARAMETER_CONSTRUCTOR( derived, (base), tag, (optional (arg1,int,1) (arg2,int,2))) }; } /* foo */ struct default_ {}; int main(int argc, char * arg[]) { foo::derived instance(); return 0; }