Wednesday 15 February 2012

c++ - Is it possible to inject an enum into a classes scope/namespace? -



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