
On Thu, May 31, 2012 at 7:45 PM, Beman Dawes <bdawes@acm.org> wrote:
Release candidate files for 1.50.0 beta 1 are available at http://boost.cowic.de/rc/
As always, the release managers would appreciate it if you download the candidate of your choice and give building it a try. Please report both success and failure, and anything else that is noteworthy.
This helps ensure the candidates build OK before we push them out to SourceForge.
I've been using the RC in my projects and I notice an issue with Boost.Parameter. It looks like that the RC Boost.Parameter is not able to refer to the parameter types within the function declaration. For example, this uses `tag::x::_` to refer to x's type: #include <boost/parameter.hpp> #include <iostream> BOOST_PARAMETER_NAME(x) BOOST_PARAMETER_NAME(y) BOOST_PARAMETER_FUNCTION( (void), f, tag, (required (x, *) (y, (tag::x::_)) ) ) { std::cout << x << " " << y << std::endl; } int main ( void ) { f(1, 2); return 0; } This example compiles using Boost.Parameter from the trunk (both MSVC 8 and GCC 4.5.3) but on GCC 4.5.3 using Boost.Parameter from RC 1.50.0 Beta1 gives the errors below. It looks like there were only an hand full of changes of Boost.Parameter that were not merged from trunk to release (see attached .diff). Can these be merged? Referring to the parameter type within the function declaration is a key feature of Boost.Parameter... IMO, it's bad if that feature is broken in 1.50.0. In file included from ../../../boost/1_50_0_beta1.cygwin/boost/parameter.hpp:14:0, from 04.cpp:2: ../../../boost/1_50_0_beta1.cygwin/boost/parameter/value_type.hpp: In instantiation of ‘boost::parameter::value_type<mpl_::arg<2>, tag::x, boost::parameter::void_>’: 04.cpp:13:1: instantiated from ‘typename boost_param_result_13f<Args>::type boost_param_implf(const Args&) [with Args = boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<tag::y, const int>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<tag::x, const int>, boost::parameter::aux::empty_arg_list> >, typename boost_param_result_13f<Args>::type = void]’ 04.cpp:13:1: instantiated from ‘typename boost_param_result_13f<typename boost::parameter::aux::argument_pack<boost_param_params_13f<int>, const ParameterArgumentType0, const ParameterArgumentType1>::type>::type f(const ParameterArgumentType0&, const ParameterArgumentType1&, typename boost::parameter::aux::match<boost_param_params_13f<int>, ParameterArgumentType0, ParameterArgumentType1>::type) [with ParameterArgumentType0 = int, ParameterArgumentType1 = int, typename boost_param_result_13f<typename boost::parameter::aux::argument_pack<boost_param_params_13f<int>, const ParameterArgumentType0, const ParameterArgumentType1>::type>::type = void, typename boost::parameter::aux::match<boost_param_params_13f<int>, ParameterArgumentType0, ParameterArgumentType1>::type = boost::parameter::parameters<boost::parameter::required<tag::x, boost::mpl::always<mpl_::bool_<true> > >, boost::parameter::required<tag::y, boost::is_convertible<mpl_::arg<-0x000000001>, boost::parameter::value_type<mpl_::arg<2>, tag::x, boost::parameter::void_> > > >]’ 04.cpp:19:11: instantiated from here ../../../boost/1_50_0_beta1.cygwin/boost/parameter/value_type.hpp:60:13: error: no type named ‘binding’ in ‘struct mpl_::arg<2>’ ../../../boost/1_50_0_beta1.cygwin/boost/parameter/value_type.hpp:62:5: error: no type named ‘binding’ in ‘struct mpl_::arg<2>’ 04.cpp: In function ‘typename boost_param_result_13f<Args>::type boost_param_implf(const Args&) [with Args = boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<tag::y, const int>, boost::parameter::aux::arg_list<boost::parameter::aux::tagged_argument<tag::x, const int>, boost::parameter::aux::empty_arg_list> >, typename boost_param_result_13f<Args>::type = void]’: 04.cpp:13:1: instantiated from ‘typename boost_param_result_13f<typename boost::parameter::aux::argument_pack<boost_param_params_13f<int>, const ParameterArgumentType0, const ParameterArgumentType1>::type>::type f(const ParameterArgumentType0&, const ParameterArgumentType1&, typename boost::parameter::aux::match<boost_param_params_13f<int>, ParameterArgumentType0, ParameterArgumentType1>::type) [with ParameterArgumentType0 = int, ParameterArgumentType1 = int, typename boost_param_result_13f<typename boost::parameter::aux::argument_pack<boost_param_params_13f<int>, const ParameterArgumentType0, const ParameterArgumentType1>::type>::type = void, typename boost::parameter::aux::match<boost_param_params_13f<int>, ParameterArgumentType0, ParameterArgumentType1>::type = boost::parameter::parameters<boost::parameter::required<tag::x, boost::mpl::always<mpl_::bool_<true> > >, boost::parameter::required<tag::y, boost::is_convertible<mpl_::arg<-0x000000001>, boost::parameter::value_type<mpl_::arg<2>, tag::x, boost::parameter::void_> > > >]’ 04.cpp:19:11: instantiated from here 04.cpp:13:1: error: no matching function for call to ‘boost::parameter::aux::cast<void(boost::parameter::value_type<mpl_::arg<2>, tag::x, boost::parameter::void_>)>::execute(const int&)’ ../../../boost/1_50_0_beta1.cygwin/boost/parameter/aux_/cast.hpp:99:28: note: candidates are: static boost::parameter::aux::use_default_tag boost::parameter::aux::cast<void(T)>::execute(boost::parameter::aux::use_default_tag) [with T = boost::parameter::value_type<mpl_::arg<2>, tag::x, boost::parameter::void_>] ../../../boost/1_50_0_beta1.cygwin/boost/parameter/aux_/cast.hpp:109:14: note: static T boost::parameter::aux::cast<void(T)>::execute(T) [with T = boost::parameter::value_type<mpl_::arg<2>, tag::x, boost::parameter::void_>] 04.cpp:13:1: error: return-statement with a value, in function returning 'void' Thanks. --Lorenzo