Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r68951 - in sandbox/local/libs/local/params_name: . boost/local/aux_ boost/local/aux_/function boost/local/aux_/function/code_
From: lorcaminiti_at_[hidden]
Date: 2011-02-16 12:04:38


Author: lcaminiti
Date: 2011-02-16 12:04:17 EST (Wed, 16 Feb 2011)
New Revision: 68951
URL: http://svn.boost.org/trac/boost/changeset/68951

Log:
Added code to deduce result type preceding the params macro.
Added:
   sandbox/local/libs/local/params_name/boost/local/aux_/function/code_/deduce_result_type.hpp (contents, props changed)
Text files modified:
   sandbox/local/libs/local/params_name/00.cpp | 563 +++++++++++++++++++++++++++++++++++++++
   sandbox/local/libs/local/params_name/03.cpp | 24
   sandbox/local/libs/local/params_name/boost/local/aux_/function/params.hpp | 24
   sandbox/local/libs/local/params_name/boost/local/aux_/symbol.hpp | 7
   4 files changed, 586 insertions(+), 32 deletions(-)

Modified: sandbox/local/libs/local/params_name/00.cpp
==============================================================================
--- sandbox/local/libs/local/params_name/00.cpp (original)
+++ sandbox/local/libs/local/params_name/00.cpp 2011-02-16 12:04:17 EST (Wed, 16 Feb 2011)
@@ -406,6 +406,13 @@
 
 
 
+
+
+
+
+
+
+
  
 
 
@@ -198098,6 +198105,13 @@
 
 
 
+
+
+
+
+
+
+
 extern boost::scope_exit::aux::undeclared
         boost_local_auxXargs;
 
@@ -199658,6 +199672,534 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
         
 
 
@@ -211520,23 +212062,24 @@
 
 
 
-enum { boost_se_thistype_index_7 = sizeof(*boost::scope_exit::msvc_typeof_this::encode_start(this)) }; typedef boost::scope_exit::msvc_typeof_this::msvc_typeid_wrapper<boost_se_thistype_index_7>::type se_this_type7; typedef void (*boost_se_tag_0_7)(int this_ ); typedef void (*boost_se_tag_1_7)(int c ); typedef void (*boost_se_tag_2_7)(int & d ); typedef void (*boost_se_tag_3_7)(int a ); typedef void (*boost_se_tag_4_7)(int & b ); typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(this, (boost_se_tag_0_7)0))))>::type boost_se_wrapped_t_0_7; typedef boost_se_wrapped_t_0_7::type boost_se_capture_t_0_7; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(c, (boost_se_tag_1_7)0))))>::type boost_se_wrapped_t_1_7; typedef boost_se_wrapped_t_1_7::type boost_se_capture_t_1_7; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::ty
pe_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(& d, (boost_se_tag_2_7)0))))>::type boost_se_wrapped_t_2_7; typedef boost_se_wrapped_t_2_7::type boost_se_capture_t_2_7; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(a, (boost_se_tag_3_7)0))))>::type boost_se_wrapped_t_3_7; typedef boost_se_wrapped_t_3_7::type boost_se_capture_t_3_7; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(& b, (boost_se_tag_4_7)0))))>::type boost_se_wrapped_t_4_7; typedef boost_se_wrapped_t_4_7::type boost_se_capture_t_4_7; struct boost_se_params_t_7 { se_this_type7 se_this; typedef boost_se_capture_t_0_7 boost_se_param_t_0_7; typedef boost_se_capture_t_1_7 boost_se_param_t_1_7; typedef boost_se_capture_t_2_7 boost_se_param_t_2_7; typedef boost_se_capture_t_3_7 boost_se_param_t_3_7; typedef boost_se_capture_t_4_7
boost_se_param_t_4_7; boost::scope_exit::aux::member< boost_se_param_t_0_7, boost_se_tag_0_7 > boost_se_param_0_7; boost::scope_exit::aux::member< boost_se_param_t_1_7, boost_se_tag_1_7 > boost_se_param_1_7; boost::scope_exit::aux::member< boost_se_param_t_2_7, boost_se_tag_2_7 > boost_se_param_2_7; boost::scope_exit::aux::member< boost_se_param_t_3_7, boost_se_tag_3_7 > boost_se_param_3_7; boost::scope_exit::aux::member< boost_se_param_t_4_7, boost_se_tag_4_7 > boost_se_param_4_7; } boost_local_auxXparams_7 = { this , boost::scope_exit::aux::deref(this, (boost_se_tag_0_7)0) , boost::scope_exit::aux::deref(c, (boost_se_tag_1_7)0) , boost::scope_exit::aux::deref(& d, (boost_se_tag_2_7)0) , boost::scope_exit::aux::deref(a, (boost_se_tag_3_7)0) , boost::scope_exit::aux::deref(& b, (boost_se_tag_4_7)0) }; boost::scope_exit::aux::declared< boost::scope_exit::aux::resolve< sizeof(boost_local_auxXargs) >::cmp1<0>::cmp2 > boost_local_auxXargs; boost_local_auxXargs.value = &boost_local_auxXparams_7;
-enum { boost_se_thistype_index_9 = sizeof(*boost::scope_exit::msvc_typeof_this::encode_start(this)) }; typedef boost::scope_exit::msvc_typeof_this::msvc_typeid_wrapper<boost_se_thistype_index_9>::type se_this_type9; typedef void (*boost_se_tag_0_9)(int this_ ); typedef void (*boost_se_tag_1_9)(int c ); typedef void (*boost_se_tag_2_9)(int & d ); typedef void (*boost_se_tag_3_9)(int a ); typedef void (*boost_se_tag_4_9)(int & b ); typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(this, (boost_se_tag_0_9)0))))>::type boost_se_wrapped_t_0_9; typedef boost_se_wrapped_t_0_9::type boost_se_capture_t_0_9; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(c, (boost_se_tag_1_9)0))))>::type boost_se_wrapped_t_1_9; typedef boost_se_wrapped_t_1_9::type boost_se_capture_t_1_9; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::ty
pe_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(& d, (boost_se_tag_2_9)0))))>::type boost_se_wrapped_t_2_9; typedef boost_se_wrapped_t_2_9::type boost_se_capture_t_2_9; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(a, (boost_se_tag_3_9)0))))>::type boost_se_wrapped_t_3_9; typedef boost_se_wrapped_t_3_9::type boost_se_capture_t_3_9; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(& b, (boost_se_tag_4_9)0))))>::type boost_se_wrapped_t_4_9; typedef boost_se_wrapped_t_4_9::type boost_se_capture_t_4_9; struct boost_se_params_t_9 { se_this_type9 se_this; typedef boost_se_capture_t_0_9 boost_se_param_t_0_9; typedef boost_se_capture_t_1_9 boost_se_param_t_1_9; typedef boost_se_capture_t_2_9 boost_se_param_t_2_9; typedef boost_se_capture_t_3_9 boost_se_param_t_3_9; typedef boost_se_capture_t_4_9
boost_se_param_t_4_9; boost::scope_exit::aux::member< boost_se_param_t_0_9, boost_se_tag_0_9 > boost_se_param_0_9; boost::scope_exit::aux::member< boost_se_param_t_1_9, boost_se_tag_1_9 > boost_se_param_1_9; boost::scope_exit::aux::member< boost_se_param_t_2_9, boost_se_tag_2_9 > boost_se_param_2_9; boost::scope_exit::aux::member< boost_se_param_t_3_9, boost_se_tag_3_9 > boost_se_param_3_9; boost::scope_exit::aux::member< boost_se_param_t_4_9, boost_se_tag_4_9 > boost_se_param_4_9; } boost_local_auxXparams_9 = { this , boost::scope_exit::aux::deref(this, (boost_se_tag_0_9)0) , boost::scope_exit::aux::deref(c, (boost_se_tag_1_9)0) , boost::scope_exit::aux::deref(& d, (boost_se_tag_2_9)0) , boost::scope_exit::aux::deref(a, (boost_se_tag_3_9)0) , boost::scope_exit::aux::deref(& b, (boost_se_tag_4_9)0) }; boost::scope_exit::aux::declared< boost::scope_exit::aux::resolve< sizeof(boost_local_auxXargs) >::cmp1<0>::cmp2 > boost_local_auxXargs; boost_local_auxXargs.value = &boost_local_auxXparams_9;
+
+char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id7(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id7))>::type>::type boost_local_auxXresult_type7; enum { boost_se_thistype_index_7 = sizeof(*boost::scope_exit::msvc_typeof_this::encode_start(this)) }; typedef boost::scope_exit::msvc_typeof_this::msvc_typeid_wrapper<boost_se_thistype_index_7>::type se_this_type7; typedef void (*boost_se_tag_0_7)(int this_ ); typedef void (*boost_se_tag_1_7)(int c ); typedef void (*boost_se_tag_2_7)(int & d ); typedef void (*boost_se_tag_3_7)(int a ); typedef void (*boost_se_tag_4_7)(int & b ); typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(this, (boost_se_tag_0_7)0))))>::type boost_se_wrapped_t_0_7; typedef boost_se_wrapped_t_0_7::type boost_se_capture_t_0_7; typede
f boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(c, (boost_se_tag_1_7)0))))>::type boost_se_wrapped_t_1_7; typedef boost_se_wrapped_t_1_7::type boost_se_capture_t_1_7; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(& d, (boost_se_tag_2_7)0))))>::type boost_se_wrapped_t_2_7; typedef boost_se_wrapped_t_2_7::type boost_se_capture_t_2_7; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(a, (boost_se_tag_3_7)0))))>::type boost_se_wrapped_t_3_7; typedef boost_se_wrapped_t_3_7::type boost_se_capture_t_3_7; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(& b, (boost_se_tag_4_7)0))))>::type boost_se_wrapped_t_4_7; typedef boost_se_wrapped_t_4_7::type boost
_se_capture_t_4_7; struct boost_se_params_t_7 { se_this_type7 se_this; typedef boost_se_capture_t_0_7 boost_se_param_t_0_7; typedef boost_se_capture_t_1_7 boost_se_param_t_1_7; typedef boost_se_capture_t_2_7 boost_se_param_t_2_7; typedef boost_se_capture_t_3_7 boost_se_param_t_3_7; typedef boost_se_capture_t_4_7 boost_se_param_t_4_7; boost::scope_exit::aux::member< boost_se_param_t_0_7, boost_se_tag_0_7 > boost_se_param_0_7; boost::scope_exit::aux::member< boost_se_param_t_1_7, boost_se_tag_1_7 > boost_se_param_1_7; boost::scope_exit::aux::member< boost_se_param_t_2_7, boost_se_tag_2_7 > boost_se_param_2_7; boost::scope_exit::aux::member< boost_se_param_t_3_7, boost_se_tag_3_7 > boost_se_param_3_7; boost::scope_exit::aux::member< boost_se_param_t_4_7, boost_se_tag_4_7 > boost_se_param_4_7; } boost_local_auxXparams_7 = { this , boost::scope_exit::aux::deref(this, (boost_se_tag_0_7)0) , boost::scope_exit::aux::deref(c, (boost_se_tag_1_7)0) , boost::scope_exit::aux::deref(& d, (boost_se_tag_2_7)0) , boos
t::scope_exit::aux::deref(a, (boost_se_tag_3_7)0) , boost::scope_exit::aux::deref(& b, (boost_se_tag_4_7)0) }; boost::scope_exit::aux::declared< boost::scope_exit::aux::resolve< sizeof(boost_local_auxXargs) >::cmp1<0>::cmp2 > boost_local_auxXargs; boost_local_auxXargs.value = &boost_local_auxXparams_7;
+char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id9(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id9))>::type>::type boost_local_auxXresult_type9; enum { boost_se_thistype_index_9 = sizeof(*boost::scope_exit::msvc_typeof_this::encode_start(this)) }; typedef boost::scope_exit::msvc_typeof_this::msvc_typeid_wrapper<boost_se_thistype_index_9>::type se_this_type9; typedef void (*boost_se_tag_0_9)(int this_ ); typedef void (*boost_se_tag_1_9)(int c ); typedef void (*boost_se_tag_2_9)(int & d ); typedef void (*boost_se_tag_3_9)(int a ); typedef void (*boost_se_tag_4_9)(int & b ); typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(this, (boost_se_tag_0_9)0))))>::type boost_se_wrapped_t_0_9; typedef boost_se_wrapped_t_0_9::type boost_se_capture_t_0_9; typede
f boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(c, (boost_se_tag_1_9)0))))>::type boost_se_wrapped_t_1_9; typedef boost_se_wrapped_t_1_9::type boost_se_capture_t_1_9; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(& d, (boost_se_tag_2_9)0))))>::type boost_se_wrapped_t_2_9; typedef boost_se_wrapped_t_2_9::type boost_se_capture_t_2_9; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(a, (boost_se_tag_3_9)0))))>::type boost_se_wrapped_t_3_9; typedef boost_se_wrapped_t_3_9::type boost_se_capture_t_3_9; typedef boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(boost::scope_exit::aux::wrap( boost::scope_exit::aux::deref(& b, (boost_se_tag_4_9)0))))>::type boost_se_wrapped_t_4_9; typedef boost_se_wrapped_t_4_9::type boost
_se_capture_t_4_9; struct boost_se_params_t_9 { se_this_type9 se_this; typedef boost_se_capture_t_0_9 boost_se_param_t_0_9; typedef boost_se_capture_t_1_9 boost_se_param_t_1_9; typedef boost_se_capture_t_2_9 boost_se_param_t_2_9; typedef boost_se_capture_t_3_9 boost_se_param_t_3_9; typedef boost_se_capture_t_4_9 boost_se_param_t_4_9; boost::scope_exit::aux::member< boost_se_param_t_0_9, boost_se_tag_0_9 > boost_se_param_0_9; boost::scope_exit::aux::member< boost_se_param_t_1_9, boost_se_tag_1_9 > boost_se_param_1_9; boost::scope_exit::aux::member< boost_se_param_t_2_9, boost_se_tag_2_9 > boost_se_param_2_9; boost::scope_exit::aux::member< boost_se_param_t_3_9, boost_se_tag_3_9 > boost_se_param_3_9; boost::scope_exit::aux::member< boost_se_param_t_4_9, boost_se_tag_4_9 > boost_se_param_4_9; } boost_local_auxXparams_9 = { this , boost::scope_exit::aux::deref(this, (boost_se_tag_0_9)0) , boost::scope_exit::aux::deref(c, (boost_se_tag_1_9)0) , boost::scope_exit::aux::deref(& d, (boost_se_tag_2_9)0) , boos
t::scope_exit::aux::deref(a, (boost_se_tag_3_9)0) , boost::scope_exit::aux::deref(& b, (boost_se_tag_4_9)0) }; boost::scope_exit::aux::declared< boost::scope_exit::aux::resolve< sizeof(boost_local_auxXargs) >::cmp1<0>::cmp2 > boost_local_auxXargs; boost_local_auxXargs.value = &boost_local_auxXparams_9;
 
 
 
- boost::scope_exit::aux::declared< boost::scope_exit::aux::resolve< sizeof(boost_local_auxXargs) >::cmp1<0>::cmp2 > boost_local_auxXargs;
- boost::scope_exit::aux::declared< boost::scope_exit::aux::resolve< sizeof(boost_local_auxXargs) >::cmp1<0>::cmp2 > boost_local_auxXargs;
+char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id13(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id13))>::type>::type boost_local_auxXresult_type13; boost::scope_exit::aux::declared< boost::scope_exit::aux::resolve< sizeof(boost_local_auxXargs) >::cmp1<0>::cmp2 > boost_local_auxXargs;
+char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id14(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id14))>::type>::type boost_local_auxXresult_type14; boost::scope_exit::aux::declared< boost::scope_exit::aux::resolve< sizeof(boost_local_auxXargs) >::cmp1<0>::cmp2 > boost_local_auxXargs;
 
 
 
     
-; struct ERROR_default_value_cannot_be_specified_as_the_first_element ; typedef struct ERROR_default_value_cannot_be_specified_as_the_first_element9 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_default_value_cannot_be_specified_as_the_first_element ::************ assert_arg()) () { return 0; } } mpl_assert_arg9; static const std::size_t mpl_assertion_in_line_9 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg9::assert_arg() ) ) ;
-; struct ERROR_default_value_cannot_be_specified_as_the_first_element ; typedef struct ERROR_default_value_cannot_be_specified_as_the_first_element10 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_default_value_cannot_be_specified_as_the_first_element ::************ assert_arg()) () { return 0; } } mpl_assert_arg10; static const std::size_t mpl_assertion_in_line_10 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg10::assert_arg() ) ) ;
+char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id21(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id21))>::type>::type boost_local_auxXresult_type21; ; struct ERROR_default_value_cannot_be_specified_as_the_first_element ; typedef struct ERROR_default_value_cannot_be_specified_as_the_first_element9 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_default_value_cannot_be_specified_as_the_first_element ::************ assert_arg()) () { return 0; } } mpl_assert_arg9; static const std::size_t mpl_assertion_in_line_9 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg9::assert_arg() ) ) ;
+char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id24(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id24))>::type>::type boost_local_auxXresult_type24; ; struct ERROR_default_value_cannot_be_specified_as_the_first_element ; typedef struct ERROR_default_value_cannot_be_specified_as_the_first_element10 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_default_value_cannot_be_specified_as_the_first_element ::************ assert_arg()) () { return 0; } } mpl_assert_arg10; static const std::size_t mpl_assertion_in_line_10 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg10::assert_arg() ) ) ;
 
-; struct ERROR_default_value_at_element_6_must_follow_an_unbound_parameter ; typedef struct ERROR_default_value_at_element_6_must_follow_an_unbound_parameter11 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_default_value_at_element_6_must_follow_an_unbound_parameter ::************ assert_arg()) () { return 0; } } mpl_assert_arg11; static const std::size_t mpl_assertion_in_line_11 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg11::assert_arg() ) ) ;
-; struct ERROR_default_value_at_element_6_must_follow_an_unbound_parameter ; typedef struct ERROR_default_value_at_element_6_must_follow_an_unbound_parameter12 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_default_value_at_element_6_must_follow_an_unbound_parameter ::************ assert_arg()) () { return 0; } } mpl_assert_arg12; static const std::size_t mpl_assertion_in_line_12 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg12::assert_arg() ) ) ;
+char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id27(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id27))>::type>::type boost_local_auxXresult_type27; ; struct ERROR_default_value_at_element_6_must_follow_an_unbound_parameter ; typedef struct ERROR_default_value_at_element_6_must_follow_an_unbound_parameter11 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_default_value_at_element_6_must_follow_an_unbound_parameter ::************ assert_arg()) () { return 0; } } mpl_assert_arg11; static const std::size_t mpl_assertion_in_line_11 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg11::assert_arg() ) ) ;
+char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id29(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id29))>::type>::type boost_local_auxXresult_type29; ; struct ERROR_default_value_at_element_6_must_follow_an_unbound_parameter ; typedef struct ERROR_default_value_at_element_6_must_follow_an_unbound_parameter12 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_default_value_at_element_6_must_follow_an_unbound_parameter ::************ assert_arg()) () { return 0; } } mpl_assert_arg12; static const std::size_t mpl_assertion_in_line_12 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg12::assert_arg() ) ) ;
 
-; struct ERROR_object_this_cannot_be_bound_multiple_times ; typedef struct ERROR_object_this_cannot_be_bound_multiple_times13 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_object_this_cannot_be_bound_multiple_times ::************ assert_arg()) () { return 0; } } mpl_assert_arg13; static const std::size_t mpl_assertion_in_line_13 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg13::assert_arg() ) ) ;
-; struct ERROR_object_this_cannot_be_bound_multiple_times ; typedef struct ERROR_object_this_cannot_be_bound_multiple_times14 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_object_this_cannot_be_bound_multiple_times ::************ assert_arg()) () { return 0; } } mpl_assert_arg14; static const std::size_t mpl_assertion_in_line_14 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg14::assert_arg() ) ) ;
+char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id32(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id32))>::type>::type boost_local_auxXresult_type32; ; struct ERROR_object_this_cannot_be_bound_multiple_times ; typedef struct ERROR_object_this_cannot_be_bound_multiple_times13 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_object_this_cannot_be_bound_multiple_times ::************ assert_arg()) () { return 0; } } mpl_assert_arg13; static const std::size_t mpl_assertion_in_line_13 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg13::assert_arg() ) ) ;
+char& ERROR_missing_result_type_before_the_local_function_parameter_macro_id34(); typedef boost::function_tratis::result_type<boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(ERROR_missing_result_type_before_the_local_function_parameter_macro_id34))>::type>::type boost_local_auxXresult_type34; ; struct ERROR_object_this_cannot_be_bound_multiple_times ; typedef struct ERROR_object_this_cannot_be_bound_multiple_times14 : boost::mpl::assert_ { static boost::mpl::failed ************ (ERROR_object_this_cannot_be_bound_multiple_times ::************ assert_arg()) () { return 0; } } mpl_assert_arg14; static const std::size_t mpl_assertion_in_line_14 = sizeof( boost::mpl::assertion_failed<(false)>( mpl_assert_arg14::assert_arg() ) ) ;
 

Modified: sandbox/local/libs/local/params_name/03.cpp
==============================================================================
--- sandbox/local/libs/local/params_name/03.cpp (original)
+++ sandbox/local/libs/local/params_name/03.cpp 2011-02-16 12:04:17 EST (Wed, 16 Feb 2011)
@@ -3,31 +3,33 @@
 
 // OK.
 
-BOOST_LOCAL_FUNCTION_PARAMS( (int x) (double y)(default 1.23)
+char& BOOST_LOCAL_FUNCTION_PARAMS( (int x) (double y)(default 1.23)
         (bind a) (bind& b) (const bind c) (const bind this) (const bind& d) )
-BOOST_LOCAL_FUNCTION_PARAMS(int x, double y WITH_DEFAULT(1.23), // C99 (ok for MSVC)
+char& BOOST_LOCAL_FUNCTION_PARAMS(int x, double y WITH_DEFAULT(1.23), // C99 (ok for MSVC)
         bind a, bind& b, const bind c, const bind this, const bind& d)
 
 // Void.
 
-BOOST_LOCAL_FUNCTION_PARAMS(void)
-BOOST_LOCAL_FUNCTION_PARAMS( (void) )
+char& BOOST_LOCAL_FUNCTION_PARAMS(void)
+char& BOOST_LOCAL_FUNCTION_PARAMS( (void) )
 //BOOST_LOCAL_FUNCTION_PARAMS() // C99 (not MSVC)
 
 // Errors.
     
-BOOST_LOCAL_FUNCTION_PARAMS( (default -1) (int x) (double y)(default 1.23)
+char& BOOST_LOCAL_FUNCTION_PARAMS( (default -1) (int x)
+ (double y)(default 1.23)
         (bind a) (bind& b) (const bind c) (const bind this) (const bind& d) )
-BOOST_LOCAL_FUNCTION_PARAMS(default -1, int x, double y, default 1.23, // C99
- bind a, bind& b, const bind c, const bind this,const bind& d)
+char& BOOST_LOCAL_FUNCTION_PARAMS(default -1, int x,
+ double y, default 1.23, // C99
+ bind a, bind& b, const bind c, const bind this, const bind& d)
 
-BOOST_LOCAL_FUNCTION_PARAMS( (int x) (double y)(default 1.23)
+char& BOOST_LOCAL_FUNCTION_PARAMS( (int x) (double y)(default 1.23)
         (bind a) (bind& b) (default -1) (const bind this) (const bind& d) )
-BOOST_LOCAL_FUNCTION_PARAMS(int x, double y, default 1.23,
+char& BOOST_LOCAL_FUNCTION_PARAMS(int x, double y, default 1.23,
         bind a, bind& b, default -1, const bind this, const bind& d)
 
-BOOST_LOCAL_FUNCTION_PARAMS( (bind this) (int x) (bind this)
+char& BOOST_LOCAL_FUNCTION_PARAMS( (bind this) (int x) (bind this)
         (bind a) (const bind this) (const bind& d) )
-BOOST_LOCAL_FUNCTION_PARAMS(bind this, int x, bind this,
+char& BOOST_LOCAL_FUNCTION_PARAMS(bind this, int x, bind this,
         bind a, const bind this, const bind& d)
 

Added: sandbox/local/libs/local/params_name/boost/local/aux_/function/code_/deduce_result_type.hpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/function/code_/deduce_result_type.hpp 2011-02-16 12:04:17 EST (Wed, 16 Feb 2011)
@@ -0,0 +1,19 @@
+
+#ifndef BOOST_LOCAL_AUX_FUNCTION_CODE_DEDUCE_RESULT_TYPE_HPP_
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_DEDUCE_RESULT_TYPE_HPP_
+
+#include "../../symbol.hpp"
+// Use this lib's ScopeExit impl (for TYPEOF).
+#include "../../scope_exit/scope_exit.hpp"
+
+// This must follow the result type.
+#define BOOST_LOCAL_AUX_FUNCTION_CODE_DEDUCE_RESULT_TYPE( \
+ id, typename_keyword) \
+ /* declare function expr with preceeding result type and no param */ \
+ /* result type here */ BOOST_LOCAL_AUX_SYMBOL_DEDUCE_RESULT_TYPE(id)(); \
+ typedef boost::function_tratis::result_type<BOOST_TYPEOF( \
+ BOOST_LOCAL_AUX_SYMBOL_DEDUCE_RESULT_TYPE(id))>::type \
+ BOOST_LOCAL_AUX_SYMBOL_RESULT_TYPE(id);
+
+#endif // #include guard
+

Modified: sandbox/local/libs/local/params_name/boost/local/aux_/function/params.hpp
==============================================================================
--- sandbox/local/libs/local/params_name/boost/local/aux_/function/params.hpp (original)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/function/params.hpp 2011-02-16 12:04:17 EST (Wed, 16 Feb 2011)
@@ -3,6 +3,7 @@
 #define BOOST_LOCAL_AUX_FUNCTION_PARAMS_HPP_
 
 #include "code_/binding.hpp"
+#include "code_/deduce_result_type.hpp"
 #include "../preprocessor/sign/parse_params.hpp"
 #include "../preprocessor/sign/params_error.hpp"
 #include <boost/mpl/assert.hpp>
@@ -10,27 +11,27 @@
 
 // PRIVATE //
 
-#define BOOST_LOCAL_AUX_FUNCTION_PARAMS_CODE_( \
- sign_params, id, typename_keyword) \
+#define BOOST_LOCAL_AUX_FUNCTION_PARAMS_OK_(sign_params, id, typename_keyword) \
     BOOST_LOCAL_AUX_FUNCTION_CODE_BINDING(sign_params, id, typename_keyword)
 
-#define BOOST_LOCAL_AUX_FUNCTION_PARAMS_OK_(sign_params, typename_keyword) \
- BOOST_LOCAL_AUX_FUNCTION_PARAMS_CODE_( \
- sign_params, __LINE__, typename_keyword)
-
-#define BOOST_LOCAL_AUX_FUNCTION_PARAMS_ERROR_(sign_params, typename_keyword) \
+#define BOOST_LOCAL_AUX_FUNCTION_PARAMS_ERROR_( \
+ sign_params, id, typename_keyword) \
     ; /* close eventual previous statements, otherwise it has no effect */ \
     BOOST_MPL_ASSERT_MSG(false, /* always fails (there's an error) */ \
             BOOST_LOCAL_AUX_PP_SIGN_PARAMS_ERROR_MSG(sign_params), ()) \
     ; /* must close ASSERT macro for eventual use within class scope */
 
 // sign_params: parsed parenthesized params.
-#define BOOST_LOCAL_AUX_FUNCTION_PARAMS_(sign_params, typename_keyword) \
+#define BOOST_LOCAL_AUX_FUNCTION_PARAMS_(sign_params, id, typename_keyword) \
+ /* this must follow the result type (this code must be always present */ \
+ /* even if there's an error because result type always present) */ \
+ BOOST_LOCAL_AUX_FUNCTION_CODE_DEDUCE_RESULT_TYPE(id, typename_keyword) \
+ /* rest of the code */ \
     BOOST_PP_IIF(BOOST_LOCAL_AUX_PP_SIGN_PARAMS_HAVE_ERROR(sign_params), \
         BOOST_LOCAL_AUX_FUNCTION_PARAMS_ERROR_ \
     , \
         BOOST_LOCAL_AUX_FUNCTION_PARAMS_OK_ \
- )(sign_params, typename_keyword)
+ )(sign_params, id, typename_keyword)
 
 // PUBLIC //
 
@@ -38,8 +39,9 @@
 // `EMPTY()` otherwise.
 #define BOOST_LOCAL_AUX_FUNCTION_PARAMS( \
             parenthesized_params, typename_keyword) \
- BOOST_LOCAL_AUX_FUNCTION_PARAMS_(BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS( \
- parenthesized_params), typename_keyword)
+ BOOST_LOCAL_AUX_FUNCTION_PARAMS_( \
+ BOOST_LOCAL_AUX_PP_SIGN_PARSE_PARAMS(parenthesized_params), \
+ __LINE__, typename_keyword)
 
 #endif // #include guard
 

Modified: sandbox/local/libs/local/params_name/boost/local/aux_/symbol.hpp
==============================================================================
--- sandbox/local/libs/local/params_name/boost/local/aux_/symbol.hpp (original)
+++ sandbox/local/libs/local/params_name/boost/local/aux_/symbol.hpp 2011-02-16 12:04:17 EST (Wed, 16 Feb 2011)
@@ -36,6 +36,13 @@
 
 // Names (functions, variables, etc) //
 
+#define BOOST_LOCAL_AUX_SYMBOL_DEDUCE_RESULT_TYPE(id) \
+ /* symbol (not internal) also gives error if missing result type */ \
+ BOOST_PP_CAT(ERROR_missing_result_type_before_the_local_function_parameter_macro_id, id)
+
+#define BOOST_LOCAL_AUX_SYMBOL_RESULT_TYPE(id) \
+ BOOST_LOCAL_AUX_INTERNAL_SYMBOL(BOOST_PP_CAT(result_type, id))
+
 #define BOOST_LOCAL_AUX_SYMBOL_THIS_PARAM_NAME \
     BOOST_LOCAL_CONFIG_THIS_PARAM_NAME
 


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk