On Jun 5, 2007, at 8:34 PM, dx wrote:
The incomplete class "gcc_3_2_wknd" must not be used as a qualifier.
This patch on boost/mpl/has_xxx.hpp helped for Boost 1.33.1: I moved
the gcc_3_2_wknd struct outside the class scope.
Matthias
--- boost/mpl/has_xxx.hpp 2005-06-15 12:43:23.000000000 +0200
+++ /Users/troyer/Desktop/has_xxx.hpp 2007-06-12 10:36:42.000000000
+0200
@@ -1,7 +1,6 @@
#ifndef BOOST_MPL_HAS_XXX_HPP_INCLUDED
#define BOOST_MPL_HAS_XXX_HPP_INCLUDED
-
// Copyright Aleksey Gurtovoy 2002-2004
// Copyright David Abrahams 2002-2003
//
@@ -183,21 +182,21 @@
# else // other SFINAE-capable compilers
+ struct gcc_3_2_wknd
+ {
+ template< typename U >
+ static boost::mpl::aux::yes_tag test(
+ boost::mpl::aux::type_wrapper<U> const volatile*
+ , boost::mpl::aux::type_wrapper<BOOST_MSVC_TYPENAME
U::name>* = 0
+ );
+
+ static boost::mpl::aux::no_tag test(...);
+ };
+
# define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_) \
template< typename T, typename fallback_ =
boost::mpl::bool_<default_> > \
struct trait \
{ \
- struct gcc_3_2_wknd \
- { \
- template< typename U > \
- static boost::mpl::aux::yes_tag test( \
- boost::mpl::aux::type_wrapper<U> const volatile* \
- , boost::mpl::aux::type_wrapper<BOOST_MSVC_TYPENAME
U::name>* = 0 \
- ); \
- \
- static boost::mpl::aux::no_tag test(...); \
- }; \
- \
typedef boost::mpl::aux::type_wrapper<T> t_; \
BOOST_STATIC_CONSTANT(bool, value = \
sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) \
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users