diff --git a/config.htm b/config.htm
index 3513d17b..8d1baf71 100644
--- a/config.htm
+++ b/config.htm
@@ -1135,7 +1135,7 @@ void g() { return f(); }
- BOOST_CXX0X_CONCEPTS |
+ BOOST_HAS_CONCEPTS |
The compiler supports
concepts. Note: concepts have been proposed for C++0x, but have
@@ -1143,35 +1143,21 @@ void g() { return f(); }
|
- BOOST_CXX0X_LONG_LONG |
-
- The compiler supports the long long. Identical to BOOST_HAS_LONG_LONG.
- |
-
-
- BOOST_CXX0X_PREPROCESSOR |
-
- The compiler supports the
- C99 preprocessor, which includes variadic macros, concatenation of wide
- string literals, and the _Pragma operator.
- |
-
-
- BOOST_CXX0X_RVALUE_REFERENCES |
+ BOOST_HAS_RVALUE_REFS |
The compiler supports
rvalue references.
|
- BOOST_CXX0X_STATIC_ASSERT |
+ BOOST_HAS_STATIC_ASSERT |
The compiler supports
static assertions.
|
- BOOST_CXX0X_VARIADIC_TEMPLATES |
+ BOOST_HAS_VARIADIC_TMPL |
The compiler supports
variadic templates. Note: variadic templates have been proposed
diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp
index e461d10c..0aaf8953 100644
--- a/include/boost/config/compiler/gcc.hpp
+++ b/include/boost/config/compiler/gcc.hpp
@@ -92,8 +92,10 @@
// defined by some very early development versions of GCC 4.3; we will
// remove this part of the check in the near future.
# if defined(__GXX_EXPERIMENTAL_CPP0X__) || defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define BOOST_CXX0X_PREPROCESSOR
-# define BOOST_CXX0X_STATIC_ASSERT
+# define BOOST_HAS_STATIC_ASSERT
+# ifndef __STRICT_ANSI__
+# define BOOST_HAS_VARIADIC_TMPL
+# endif
# endif
#endif
@@ -104,13 +106,13 @@
// Variadic templates compiler:
// http://www.generic-programming.org/~dgregor/cpp/variadic-templates.html
#ifdef __VARIADIC_TEMPLATES
-# define BOOST_CXX0X_VARIADIC_TEMPLATES
+# define BOOST_HAS_VARIADIC_TMPL
#endif
// ConceptGCC compiler:
// http://www.generic-programming.org/software/ConceptGCC/
#ifdef __GXX_CONCEPTS__
-# define BOOST_CXX0X_CONCEPTS
+# define BOOST_HAS_CONCEPTS
# define BOOST_COMPILER "ConceptGCC version " __VERSION__
#endif
diff --git a/include/boost/config/compiler/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp
index 6ebf5500..45d5d7e1 100644
--- a/include/boost/config/compiler/metrowerks.hpp
+++ b/include/boost/config/compiler/metrowerks.hpp
@@ -84,7 +84,7 @@
// C++0x features
//
#if __option(rvalue_refs)
-# define BOOST_CXX0X_RVALUE_REFERENCES
+# define BOOST_HAS_RVALUE_REFS
#endif
#define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp
index 556fd312..badf1e51 100644
--- a/include/boost/config/suffix.hpp
+++ b/include/boost/config/suffix.hpp
@@ -38,16 +38,6 @@
# endif
#endif
-// BOOST_HAS_LONG_LONG implies BOOST_CXX0X_LONG_LONG, and vice-versa
-#if defined(BOOST_HAS_LONG_LONG) || defined(BOOST_CXX0X_LONG_LONG)
-# ifndef BOOST_HAS_LONG_LONG
-# define BOOST_HAS_LONG_LONG
-# endif
-# ifndef BOOST_CXX0X_LONG_LONG
-# define BOOST_CXX0X_LONG_LONG
-# endif
-#endif
-
// GCC 3.x will clean up all of those nasty macro definitions that
// BOOST_NO_CTYPE_FUNCTIONS is intended to help work around, so undefine
// it under GCC 3.x.
@@ -55,7 +45,6 @@
# undef BOOST_NO_CTYPE_FUNCTIONS
#endif
-
//
// Assume any extensions are in namespace std:: unless stated otherwise:
//
diff --git a/test/boost_has_concepts.ipp b/test/boost_has_concepts.ipp
new file mode 100644
index 00000000..abc1740a
--- /dev/null
+++ b/test/boost_has_concepts.ipp
@@ -0,0 +1,23 @@
+// Copyright (C) 2007 Douglas Gregor
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for most recent version.
+
+// MACRO: BOOST_HAS_CONCEPTS
+// TITLE: concepts
+// DESCRIPTION: The compiler supports C++0x concepts
+
+namespace boost_has_concepts {
+
+concept C { }
+
+concept_map C { }
+
+int test()
+{
+ return 0;
+}
+
+}
diff --git a/test/boost_has_rvalue_refs.ipp b/test/boost_has_rvalue_refs.ipp
new file mode 100644
index 00000000..f0ce174d
--- /dev/null
+++ b/test/boost_has_rvalue_refs.ipp
@@ -0,0 +1,26 @@
+// Copyright (C) 2007 Douglas Gregor
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for most recent version.
+
+// MACRO: BOOST_HAS_RVALUE_REFS
+// TITLE: rvalue references
+// DESCRIPTION: The compiler supports C++0x rvalue references
+
+namespace boost_has_rvalue_refs {
+
+void g(int&) {}
+
+template
+void forward(F f, T&& t) { f(static_cast(t)); }
+
+int test()
+{
+ int x;
+ forward(g, x);
+ return 0;
+}
+
+}
diff --git a/test/boost_has_static_assert.ipp b/test/boost_has_static_assert.ipp
new file mode 100644
index 00000000..545938a0
--- /dev/null
+++ b/test/boost_has_static_assert.ipp
@@ -0,0 +1,20 @@
+// Copyright (C) 2007 Douglas Gregor
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for most recent version.
+
+// MACRO: BOOST_HAS_STATIC_ASSERT
+// TITLE: static assertions
+// DESCRIPTION: The compiler supports C++0x static assertions
+
+namespace boost_has_static_assert {
+
+int test()
+{
+ static_assert(true, "OK");
+ return 0;
+}
+
+}
diff --git a/test/boost_has_variadic_tmpl.ipp b/test/boost_has_variadic_tmpl.ipp
new file mode 100644
index 00000000..539c512a
--- /dev/null
+++ b/test/boost_has_variadic_tmpl.ipp
@@ -0,0 +1,21 @@
+// Copyright (C) 2007 Douglas Gregor
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for most recent version.
+
+// MACRO: BOOST_HAS_VARIADIC_TMPL
+// TITLE: variadic templates
+// DESCRIPTION: The compiler supports C++0x variadic templates
+
+namespace boost_has_variadic_tmpl {
+
+template struct tuple {};
+
+int test()
+{
+ return 0;
+}
+
+}
|