
Le 07/06/14 00:41, Andrey Semashev a écrit :
Hi,
While creating tests for scoped enums emulation I've fixed a bug which
Thnaks for fixing this typename EnumType::enum_type native_value(EnumType e) { - return e.native_value_(); + return e.get_native_value_(); }
resulted in the enums being convertible to int. This is a potentially breaking change, the code like this will now not compile:
BOOST_SCOPED_ENUM_DECLARE_BEGIN(color) { red, green, blue } BOOST_SCOPED_ENUM_DECLARE_END(color)
void foo(boost::native_type<color>::type col);
color col = color::blue; foo(col);
The call to foo() should be done like this:
foo(boost::native_value(col));
Previously, the conversion was implicit.
Yes, this is a breaking change. The implicit conversion from EnumType to enum_type was intentional. operator enum_type() const BOOST_NOEXCEPT { return get_native_value_(); } I was expecting two implicit conversions: one from EnumType to enum_type and the other from enum_type to int. Am I missing something in C++98? Vicente