Index: boost/parameter/aux_/tagged_argument.hpp =================================================================== --- boost/parameter/aux_/tagged_argument.hpp (revision 53468) +++ boost/parameter/aux_/tagged_argument.hpp (working copy) @@ -99,7 +99,7 @@ typename result_of0::type get_with_lazy_default(lazy_default const& x, int) const { - return x.compute_default(); + return x.compute_default(0); } template @@ -140,7 +140,7 @@ template typename result_of0::type operator[](lazy_default const& x) const { - return x.compute_default(); + return x.compute_default(0); } template Index: boost/parameter/aux_/arg_list.hpp =================================================================== --- boost/parameter/aux_/arg_list.hpp (revision 53468) +++ boost/parameter/aux_/arg_list.hpp (working copy) @@ -114,7 +114,7 @@ typename result_of0::type get(lazy_default x) const { - return x.compute_default(); + return x.compute_default(0); } #endif @@ -135,7 +135,7 @@ operator[]( BOOST_PARAMETER_lazy_default_fallback x) const { - return x.compute_default(); + return x.compute_default(0); } // No argument corresponding to ParameterRequirements::key_type Index: boost/parameter/aux_/default.hpp =================================================================== --- boost/parameter/aux_/default.hpp (revision 53468) +++ boost/parameter/aux_/default.hpp (working copy) @@ -52,13 +52,36 @@ }; # define BOOST_PARAMETER_lazy_default_fallback lazy_default_base # else +template +struct use_template_call_helper {}; + +template +struct use_template_call_helper { + typedef typename boost::result_of::type type; +}; + template struct lazy_default { lazy_default(const DefaultComputer& x) - : compute_default(x) + : compute_default_obj(x) {} - DefaultComputer const& compute_default; + DefaultComputer const& compute_default_obj; + + template + typename boost::result_of::type + compute_default(T, ...) const { + return compute_default_obj(); + } + + template + typename use_template_call_helper::type + compute_default(T) const { + return compute_default_obj(0); + } }; # define BOOST_PARAMETER_lazy_default_fallback lazy_default # endif