Should we add preprocessor stuff to conditionally use the C++11 "enum class" construct?
#if Whatever
#define BOOST_HAVE_ENUM_CLASS
#endif
//...
#if BOOST_HAVE_ENUM_CLASS
#define BOOST_ENUM_CLASS( Name ) enum class Name
#define BOOST_ENUM_CLASS_BASE( Name, Type ) enum class Name : Type
#define BOOST_ENUM_CLASS_REFER( Type, Enumerator ) (Type :: Enumerator)
#else
#define BOOST_ENUM_CLASS( Name ) enum Name
#define BOOST_ENUM_CLASS_BASE( Name, Type ) BOOST_ENUM_CLASS( Name )
#define BOOST_ENUM_CLASS_REFER( Type, Enumerator ) (Enumerator)
#endif
I'm not sure that the second version of BOOST_ENUM_CLASS_BASE is the best alternative. Nor do I know if the parentheses around enumerators are best.
You can use BOOST_ENUM_CLASS in an enum definition header and BOOST_ENUM_CLASS_BASE as a header or a forward declaration. Since enumerators can be scoped, BOOST_ENUM_CLASS_REFER encapsulates the need to add the enum type's name.
_______________________________________________
Unsubscribe & other changes:
http://lists.boost.org/mailman/listinfo.cgi/boost