c++ - Is it possible to inject an enum into a classes scope/namespace? -
with enum foo::values
, class bar
outside of foo
, can inject values of enum class scope without redefining type?
namespace foo{ enum values{ zero, one, 2 }; } struct bar{ typedef foo::values values; //doesn't work, i'd using foo::values; //or }
so these valid:
foo::values val = bar::zero; assert(std::is_same<foo::values, bar::values>::value);
is possible?
this way:
using values = foo::values;
extracting values possible 1 one:
static constexpr values 0 = foo::zero; static constexpr values 1 = foo::one; static constexpr values 2 = foo::two;
check:
#include <iostream> #include <type_traits> namespace foo { enum values { zero, one, 2 }; } struct bar { using values = foo::values; static constexpr values 0 = foo::zero; static constexpr values 1 = foo::one; static constexpr values 2 = foo::two; }; int main() { foo::values val = bar::zero; std::cout << std::is_same<foo::values, bar::values>::value; }
output:
1
c++ c++11 enums typedef using
No comments:
Post a Comment