diff --git a/README.md b/README.md index 5416cb4..c85674c 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,7 @@ enum class Color { RED = 2, BLUE = 4, GREEN = 8 }; * Enum value sequence ```cpp - constexpr auto colors = magic_enum::enum_values(); + constexpr auto& colors = magic_enum::enum_values(); // colors -> {Color::RED, Color::BLUE, Color::GREEN} // colors[0] -> Color::RED ``` @@ -125,7 +125,7 @@ enum class Color { RED = 2, BLUE = 4, GREEN = 8 }; * Enum names sequence ```cpp - constexpr auto color_names = magic_enum::enum_names(); + constexpr auto& color_names = magic_enum::enum_names(); // color_names -> {"RED", "BLUE", "GREEN"} // color_names[0] -> "RED" ``` @@ -133,7 +133,7 @@ enum class Color { RED = 2, BLUE = 4, GREEN = 8 }; * Enum entries sequence ```cpp - constexpr auto color_entries = magic_enum::enum_entries(); + constexpr auto& color_entries = magic_enum::enum_entries(); // color_entries -> {{Color::RED, "RED"}, {Color::BLUE, "BLUE"}, {Color::GREEN, "GREEN"}} // color_entries[0].first -> Color::RED // color_entries[0].second -> "RED" diff --git a/include/magic_enum.hpp b/include/magic_enum.hpp index a888266..79294c7 100644 --- a/include/magic_enum.hpp +++ b/include/magic_enum.hpp @@ -226,6 +226,7 @@ inline constexpr bool is_enum_v = std::is_enum_v && std::is_same_v +#undef MAGIC_ENUM_RANGE_MIN #define MAGIC_ENUM_RANGE_MIN -120 +#undef MAGIC_ENUM_RANGE_MAX #define MAGIC_ENUM_RANGE_MAX 120 #include @@ -310,16 +312,16 @@ TEST_CASE("enum_value") { TEST_CASE("enum_values") { REQUIRE(std::is_same_v()), const std::array&>); - constexpr auto s1 = enum_values(); + constexpr auto& s1 = enum_values(); REQUIRE(s1 == std::array{{Color::RED, Color::GREEN, Color::BLUE}}); - auto s2 = enum_values(); + constexpr auto& s2 = enum_values(); REQUIRE(s2 == std::array{{Numbers::one, Numbers::two, Numbers::three}}); - constexpr auto s3 = enum_values(); + constexpr auto& s3 = enum_values(); REQUIRE(s3 == std::array{{Directions::Left, Directions::Down, Directions::Up, Directions::Right}}); - auto s4 = enum_values(); + constexpr auto& s4 = enum_values(); REQUIRE(s4 == std::array{{number::one, number::two, number::three}}); } @@ -327,13 +329,13 @@ TEST_CASE("enum_count") { constexpr auto s1 = enum_count(); REQUIRE(s1 == 3); - auto s2 = enum_count(); + constexpr auto s2 = enum_count(); REQUIRE(s2 == 3); constexpr auto s3 = enum_count(); REQUIRE(s3 == 4); - auto s4 = enum_count(); + constexpr auto s4 = enum_count(); REQUIRE(s4 == 3); } @@ -408,32 +410,32 @@ TEST_CASE("enum_name") { TEST_CASE("enum_names") { REQUIRE(std::is_same_v()), const std::array&>); - constexpr auto s1 = enum_names(); + constexpr auto& s1 = enum_names(); REQUIRE(s1 == std::array{{"RED", "GREEN", "BLUE"}}); - auto s2 = enum_names(); + constexpr auto& s2 = enum_names(); REQUIRE(s2 == std::array{{"one", "two", "three"}}); - constexpr auto s3 = enum_names(); + constexpr auto& s3 = enum_names(); REQUIRE(s3 == std::array{{"Left", "Down", "Up", "Right"}}); - auto s4 = enum_names(); + constexpr auto& s4 = enum_names(); REQUIRE(s4 == std::array{{"one", "two", "three"}}); } TEST_CASE("enum_entries") { REQUIRE(std::is_same_v()), const std::array, 3>&>); - constexpr auto s1 = enum_entries(); + constexpr auto& s1 = enum_entries(); REQUIRE(s1 == std::array, 3>{{{Color::RED, "RED"}, {Color::GREEN, "GREEN"}, {Color::BLUE, "BLUE"}}}); - auto s2 = enum_entries(); + constexpr auto& s2 = enum_entries(); REQUIRE(s2 == std::array, 3>{{{Numbers::one, "one"}, {Numbers::two, "two"}, {Numbers::three, "three"}}}); - constexpr auto s3 = enum_entries(); + constexpr auto& s3 = enum_entries(); REQUIRE(s3 == std::array, 4>{{{Directions::Left, "Left"}, {Directions::Down, "Down"}, {Directions::Up, "Up"}, {Directions::Right, "Right"}}}); - auto s4 = enum_entries(); + constexpr auto& s4 = enum_entries(); REQUIRE(s4 == std::array, 3>{{{number::one, "one"}, {number::two, "two"}, {number::three, "three"}}}); } diff --git a/test/test_flags.cpp b/test/test_flags.cpp index 3c64000..57375b9 100644 --- a/test/test_flags.cpp +++ b/test/test_flags.cpp @@ -23,8 +23,6 @@ #define CATCH_CONFIG_MAIN #include -#define MAGIC_ENUM_RANGE_MIN -120 -#define MAGIC_ENUM_RANGE_MAX 120 #include #include @@ -487,16 +485,16 @@ TEST_CASE("enum_value") { TEST_CASE("enum_values") { REQUIRE(std::is_same_v()), const std::array&>); - constexpr auto s1 = enum_values(); + constexpr auto& s1 = enum_values(); REQUIRE(s1 == std::array{{Color::RED, Color::GREEN, Color::BLUE}}); - auto s2 = enum_values(); + constexpr auto& s2 = enum_values(); REQUIRE(s2 == std::array{{Numbers::one, Numbers::two, Numbers::three, Numbers::many}}); - constexpr auto s3 = enum_values(); + constexpr auto& s3 = enum_values(); REQUIRE(s3 == std::array{{Directions::Left, Directions::Down, Directions::Up, Directions::Right}}); - auto s4 = enum_values(); + constexpr auto& s4 = enum_values(); REQUIRE(s4 == std::array{{number::one, number::two, number::three, number::four}}); } @@ -504,13 +502,13 @@ TEST_CASE("enum_count") { constexpr auto s1 = enum_count(); REQUIRE(s1 == 3); - auto s2 = enum_count(); + constexpr auto s2 = enum_count(); REQUIRE(s2 == 4); constexpr auto s3 = enum_count(); REQUIRE(s3 == 4); - auto s4 = enum_count(); + constexpr auto s4 = enum_count(); REQUIRE(s4 == 4); } @@ -561,32 +559,32 @@ TEST_CASE("enum_name") { TEST_CASE("enum_names") { REQUIRE(std::is_same_v()), const std::array&>); - constexpr auto s1 = enum_names(); + constexpr auto& s1 = enum_names(); REQUIRE(s1 == std::array{{"RED", "GREEN", "BLUE"}}); - auto s2 = enum_names(); + constexpr auto& s2 = enum_names(); REQUIRE(s2 == std::array{{"one", "two", "three", "many"}}); - constexpr auto s3 = enum_names(); + constexpr auto& s3 = enum_names(); REQUIRE(s3 == std::array{{"Left", "Down", "Up", "Right"}}); - auto s4 = enum_names(); + constexpr auto& s4 = enum_names(); REQUIRE(s4 == std::array{{"one", "two", "three", "four"}}); } TEST_CASE("enum_entries") { REQUIRE(std::is_same_v()), const std::array, 3>&>); - constexpr auto s1 = enum_entries(); + constexpr auto& s1 = enum_entries(); REQUIRE(s1 == std::array, 3>{{{Color::RED, "RED"}, {Color::GREEN, "GREEN"}, {Color::BLUE, "BLUE"}}}); - auto s2 = enum_entries(); + constexpr auto& s2 = enum_entries(); REQUIRE(s2 == std::array, 4>{{{Numbers::one, "one"}, {Numbers::two, "two"}, {Numbers::three, "three"}, {Numbers::many, "many"}}}); - constexpr auto s3 = enum_entries(); + constexpr auto& s3 = enum_entries(); REQUIRE(s3 == std::array, 4>{{{Directions::Left, "Left"}, {Directions::Down, "Down"}, {Directions::Up, "Up"}, {Directions::Right, "Right"}}}); - auto s4 = enum_entries(); + constexpr auto& s4 = enum_entries(); REQUIRE(s4 == std::array, 4>{{{number::one, "one"}, {number::two, "two"}, {number::three, "three"}, {number::four, "four"}}}); }