$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r77965 - in trunk: boost libs/local_function/test
From: lorcaminiti_at_[hidden]
Date: 2012-04-13 19:14:49
Author: lcaminiti
Date: 2012-04-13 19:14:48 EDT (Fri, 13 Apr 2012)
New Revision: 77965
URL: http://svn.boost.org/trac/boost/changeset/77965
Log:
Fixed a bug with expansion of LocalFunction Id.
Text files modified: 
   trunk/boost/local_function.hpp                   |    30 ++++++++++++++++++++----------          
   trunk/libs/local_function/test/same_line.cpp     |     6 +++---                                  
   trunk/libs/local_function/test/same_line_seq.cpp |    12 +++++-------                            
   3 files changed, 28 insertions(+), 20 deletions(-)
Modified: trunk/boost/local_function.hpp
==============================================================================
--- trunk/boost/local_function.hpp	(original)
+++ trunk/boost/local_function.hpp	2012-04-13 19:14:48 EDT (Fri, 13 Apr 2012)
@@ -21,33 +21,43 @@
 // PUBLIC //
 
 #ifdef BOOST_NO_VARIADIC_MACROS
-#   define BOOST_LOCAL_FUNCTION(declarations) \
+#   define BOOST_LOCAL_FUNCTION_ID(id, declarations) \
         BOOST_LOCAL_FUNCTION_AUX_DECL(id, 0 /* not within template */, \
                 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS( \
                         BOOST_LOCAL_FUNCTION_DETAIL_PP_VOID_LIST( \
                                 declarations)))
-#   define BOOST_LOCAL_FUNCTION_TPL(declarations) \
+#   define BOOST_LOCAL_FUNCTION(declarations) \
+        BOOST_LOCAL_FUNCTION_ID( \
+                BOOST_LOCAL_FUNCTION_DETAIL_PP_LINE_COUNTER, declarations)
+#   define BOOST_LOCAL_FUNCTION_TPL_ID(id, declarations) \
         BOOST_LOCAL_FUNCTION_AUX_DECL(id, 1 /* within template */, \
                 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS( \
                         BOOST_LOCAL_FUNCTION_DETAIL_PP_VOID_LIST( \
                                 declarations)))
+#   define BOOST_LOCAL_FUNCTION_TPL(declarations) \
+        BOOST_LOCAL_FUNCTION_TPL_ID( \
+                BOOST_LOCAL_FUNCTION_DETAIL_PP_LINE_COUNTER, declarations)
 #else // VARIADIC
-#   define BOOST_LOCAL_FUNCTION(...) \
+#   define BOOST_LOCAL_FUNCTION_ID(id, ...) \
         BOOST_LOCAL_FUNCTION_AUX_DECL(id, 0 /* not within template */, \
                 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS( \
                         BOOST_LOCAL_FUNCTION_DETAIL_PP_VOID_LIST(__VA_ARGS__)))
-#   define BOOST_LOCAL_FUNCTION_TPL(...) \
+#   define BOOST_LOCAL_FUNCTION(...) \
+        BOOST_LOCAL_FUNCTION_ID( \
+                BOOST_LOCAL_FUNCTION_DETAIL_PP_LINE_COUNTER, __VA_ARGS__)
+#   define BOOST_LOCAL_FUNCTION_TPL_ID(id, ...) \
         BOOST_LOCAL_FUNCTION_AUX_DECL(id, 1 /* within template */, \
                 BOOST_LOCAL_FUNCTION_AUX_PP_DECL_TRAITS( \
                         BOOST_LOCAL_FUNCTION_DETAIL_PP_VOID_LIST(__VA_ARGS__)))
+#   define BOOST_LOCAL_FUNCTION_TPL(...) \
+        BOOST_LOCAL_FUNCTION_TPL_ID( \
+                BOOST_LOCAL_FUNCTION_DETAIL_PP_LINE_COUNTER, __VA_ARGS__)
 #endif // VARIADIC
 
-#define BOOST_LOCAL_FUNCTION_NAME(qualified_function_name) \
-    BOOST_LOCAL_FUNCTION_AUX_NAME(0, /* not within template */ \
-            qualified_function_name)
-#define BOOST_LOCAL_FUNCTION_NAME_TPL(qualified_function_name) \
-    BOOST_LOCAL_FUNCTION_AUX_NAME(1, /* within template */ \
-            qualified_function_name)
+#define BOOST_LOCAL_FUNCTION_NAME(qualified_name) \
+    BOOST_LOCAL_FUNCTION_AUX_NAME(0 /* not within template */, qualified_name)
+#define BOOST_LOCAL_FUNCTION_NAME_TPL(qualified_name) \
+    BOOST_LOCAL_FUNCTION_AUX_NAME(1 /* within template */, qualified_name)
 
 #define BOOST_LOCAL_FUNCTION_TYPEOF(bound_variable_name) \
     BOOST_LOCAL_FUNCTION_AUX_TYPEOF_TYPE(bound_variable_name)
Modified: trunk/libs/local_function/test/same_line.cpp
==============================================================================
--- trunk/libs/local_function/test/same_line.cpp	(original)
+++ trunk/libs/local_function/test/same_line.cpp	2012-04-13 19:14:48 EDT (Fri, 13 Apr 2012)
@@ -31,15 +31,15 @@
     int BOOST_LOCAL_FUNCTION_TPL_ID(BOOST_PP_CAT(inc, __LINE__), \
             const bind offset, const int x) { \
         return x + offset; \
-    } BOOST_LOCAL_FUNCTION_NAME(inc) \
+    } BOOST_LOCAL_FUNCTION_NAME_TPL(inc) \
     \
     int BOOST_LOCAL_FUNCTION_TPL_ID(BOOST_PP_CAT(dec, __LINE__), \
             const bind offset, const int x) { \
         return x - offset; \
-    } BOOST_LOCAL_FUNCTION_NAME(dec)
+    } BOOST_LOCAL_FUNCTION_NAME_TPL(dec)
 
 template<typename T>
-void f(int delta) {
+void f(T const& delta) {
     LOCAL_INC_DEC_TPL(delta) // Multiple local functions on same line.
     /** @todo back to BOOST_TEST(dec(inc(123)) == 123)) and doc that on vacpp compiler composition doesn't work */
     BOOST_TEST(inc(123) == 123 + delta);
Modified: trunk/libs/local_function/test/same_line_seq.cpp
==============================================================================
--- trunk/libs/local_function/test/same_line_seq.cpp	(original)
+++ trunk/libs/local_function/test/same_line_seq.cpp	2012-04-13 19:14:48 EDT (Fri, 13 Apr 2012)
@@ -11,14 +11,12 @@
 #include <iostream>
     
 #define LOCAL_INC_DEC(offset) \
-    int BOOST_LOCAL_FUNCTION_ID( \
-            BOOST_PP_CAT(inc, __LINE__) /* unique ID */, 0 /* no TPL */, \
+    int BOOST_LOCAL_FUNCTION_ID(BOOST_PP_CAT(inc, __LINE__), /* unique ID */ \
             (const bind offset) (const int x) ) { \
         return x + offset; \
     } BOOST_LOCAL_FUNCTION_NAME(inc) \
     \
-    int BOOST_LOCAL_FUNCTION_ID( \
-            BOOST_PP_CAT(dec, __LINE__) /* unique ID */, 0 /* no TPL */, \
+    int BOOST_LOCAL_FUNCTION_ID(BOOST_PP_CAT(dec, __LINE__), \
             (const bind offset) (const int x) ) { \
         return x - offset; \
     } BOOST_LOCAL_FUNCTION_NAME(dec)
@@ -27,15 +25,15 @@
     int BOOST_LOCAL_FUNCTION_TPL_ID(BOOST_PP_CAT(inc, __LINE__), \
             (const bind offset) (const int x) ) { \
         return x + offset; \
-    } BOOST_LOCAL_FUNCTION_NAME(inc) \
+    } BOOST_LOCAL_FUNCTION_NAME_TPL(inc) \
     \
     int BOOST_LOCAL_FUNCTION_TPL_ID(BOOST_PP_CAT(dec, __LINE__), \
             (const bind offset) (const int x) ) { \
         return x - offset; \
-    } BOOST_LOCAL_FUNCTION_NAME(dec)
+    } BOOST_LOCAL_FUNCTION_NAME_TPL(dec)
 
 template<typename T>
-void f(int delta) {
+void f(T const& delta) {
     LOCAL_INC_DEC_TPL(delta) // Multiple local functions on same line.
     /** @todo back to BOOST_TEST(dec(inc(123)) == 123)) and doc that on vacpp compiler composition doesn't work */
     BOOST_TEST(inc(123) == 123 + delta);