In one of my projects the header files contain code like the following: #ifndef BOOST_PARAMETER_RANDOM_EXAMPLE_HPP #define BOOST_PARAMETER_RANDOM_EXAMPLE_HPP #include <boost/type_traits/remove_const.hpp> #include <boost/random/uniform_int.hpp> #include <boost/random/variate_generator.hpp> #include <boost/parameter.hpp> namespace example { BOOST_PARAMETER_KEYWORD(tag, rng_engine) BOOST_PARAMETER_KEYWORD(tag, min) BOOST_PARAMETER_KEYWORD(tag, max) BOOST_PARAMETER_KEYWORD(tag, factor) BOOST_PARAMETER_KEYWORD(tag, addend) struct foo_parameters : boost::parameter::parameters< boost::parameter::required<tag::rng_engine> , boost::parameter::required<tag::min> , boost::parameter::required<tag::max> , boost::parameter::optional<tag::factor> , boost::parameter::optional<tag::addend> > { }; BOOST_PARAMETER_FUN(unsigned int, foo, 3, 5, foo_parameters) { typedef typename boost::remove_const< typename boost::parameter::binding< Params , tag::rng_engine >::type >::type RNGEngine; typedef boost::uniform_int<unsigned int> RNGDist; typedef boost::variate_generator<RNGEngine, RNGDist> RNG; RNGEngine rng_engine = p[example::rng_engine]; RNG rng(rng_engine, RNGDist(p[min], p[max])); return rng() * p[factor | 10] + p[addend | 5]; } } // namespace test #endif // BOOST_PARAMETER_RANDOM_EXAMPLE_HPP The following snippet would then exemplify typical user code: #include <iostream> #include <boost/ref.hpp> #include <boost/random/mersenne_twister.hpp> #include "boost_parameter_random_example.hpp" int main() { boost::mt19937 rng; std::cout << "Named: " << example::foo( example::rng_engine = rng , example::min = 12 , example::max = 24 ) << std::endl; // Ok std::cout << "Unnamed: "; std::cout << example::foo(rng, 12, 24); // error std::cout << std::endl; return 0; } MinGW reports: 'static const T& boost::random::detail::ptr_helper<T&>::ref(const T&) [with T = const boost::mt19937]' and 'static T& boost::random::detail::ptr_helper<T&>::ref(T&) [with T = const boost::mt19937]' cannot be overloaded When I wrap boost::ref around rng, the program runs fine. I'm curious as to why I get this error only when specifying positional arguments. Have I run afoul of something fundamental, such as the forwarding problem? Cromwell D. Enage __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com