Hello, James. In order to enable argument deduction, you need to augment your parameter declaration clause with either an explicit type or a Unary Metafunction Class--essentially an MPL Lambda Expression--that returns mpl::true_ when the argument type fulfills the requirements you want to impose on it. Try one the following macro invocations: BOOST_PARAMETER_CONSTRUCTOR( myclass, (myclass_impl), tag , (optional (name, (char const*)) (index, (int)) ) (deduced (optional (ratio, (double))) ) ) or BOOST_PARAMETER_CONSTRUCTOR( myclass, (myclass_impl), tag , (optional (name, (char const*)) (index, (int)) ) (deduced (optional (ratio, *(boost::is_floating_pointboost::mpl::_))) ) ) HTH, Cromwell D. Enage