Boost logo

Boost-Commit :

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;
 }
 


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