$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r61432 - in trunk: boost/config/compiler libs/config/test
From: john_at_[hidden]
Date: 2010-04-20 13:26:06
Author: johnmaddock
Date: 2010-04-20 13:26:06 EDT (Tue, 20 Apr 2010)
New Revision: 61432
URL: http://svn.boost.org/trac/boost/changeset/61432
Log:
Tweak VC10 configuration settings.
Update BOOST_NO_DECLTYPE test with VC10 bug case.
Text files modified: 
   trunk/boost/config/compiler/visualc.hpp      |    11 +++++------                             
   trunk/libs/config/test/boost_no_decltype.ipp |    25 +++++++++++++++++++++++++               
   2 files changed, 30 insertions(+), 6 deletions(-)
Modified: trunk/boost/config/compiler/visualc.hpp
==============================================================================
--- trunk/boost/config/compiler/visualc.hpp	(original)
+++ trunk/boost/config/compiler/visualc.hpp	2010-04-20 13:26:06 EDT (Tue, 20 Apr 2010)
@@ -159,31 +159,30 @@
 #if _MSC_VER < 1600
 #define BOOST_NO_AUTO_DECLARATIONS
 #define BOOST_NO_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_DECLTYPE
 #define BOOST_NO_LAMBDAS
 #define BOOST_NO_RVALUE_REFERENCES
 #define BOOST_NO_STATIC_ASSERT
+#define BOOST_NO_CHAR16_T
+#define BOOST_NO_CHAR32_T
+#define BOOST_NO_INITIALIZER_LISTS
+#define BOOST_NO_NULLPTR
 #endif // _MSC_VER < 1600
 
 // C++0x features not supported by any versions
-#define BOOST_NO_CHAR16_T
-#define BOOST_NO_CHAR32_T
 #define BOOST_NO_CONCEPTS
 #define BOOST_NO_CONSTEXPR
 #define BOOST_NO_DEFAULTED_FUNCTIONS
+#define BOOST_NO_DECLTYPE
 #define BOOST_NO_DELETED_FUNCTIONS
 #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
 #define BOOST_NO_EXTERN_TEMPLATE
 #define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_INITIALIZER_LISTS
-#define BOOST_NO_NULLPTR
 #define BOOST_NO_RAW_LITERALS
 #define BOOST_NO_SCOPED_ENUMS
 #define BOOST_NO_SFINAE_EXPR
 #define BOOST_NO_TEMPLATE_ALIASES
 #define BOOST_NO_UNICODE_LITERALS
 #define BOOST_NO_VARIADIC_TEMPLATES
-
 //
 // prefix and suffix headers:
 //
Modified: trunk/libs/config/test/boost_no_decltype.ipp
==============================================================================
--- trunk/libs/config/test/boost_no_decltype.ipp	(original)
+++ trunk/libs/config/test/boost_no_decltype.ipp	2010-04-20 13:26:06 EDT (Tue, 20 Apr 2010)
@@ -1,3 +1,4 @@
+
 //  (C) Copyright Beman Dawes 2008
 
 //  Use, modification and distribution are subject to the
@@ -12,10 +13,34 @@
 
 namespace boost_no_decltype {
 
+struct test_class
+{
+   test_class() {}
+};
+
+test_class get_test_class()
+{
+   return test_class();
+}
+
+template<typename F>
+void baz(F f)
+{
+    //
+    // Strangely VC-10 deduces the return type of F
+    // to be "test_class&".  Remove the constructor
+    // from test_class and then decltype does work OK!!
+    //
+    typedef decltype(f()) res;
+    res r;
+}
+
 int test()
 {
   int i;
   decltype(i) j;
+  decltype(get_test_class()) k;
+  baz(get_test_class);
   return 0;
 }