diff --git a/develop/untests/meta_base/name_of_tests.cpp b/develop/untests/meta_base/name_of_tests.cpp index 8edaf4f..e605234 100644 --- a/develop/untests/meta_base/name_of_tests.cpp +++ b/develop/untests/meta_base/name_of_tests.cpp @@ -22,6 +22,46 @@ TEST_CASE("meta/meta_base/name_of") { namespace meta = meta_hpp; using meta::detail::name_of; +#if META_HPP_DETAIL_COMPILER_ID == META_HPP_DETAIL_CLANG_COMPILER_ID + CHECK(name_of() == "meta_tests_ns::E"); + + CHECK(name_of() == "meta_tests_ns::A"); + CHECK(name_of() == "meta_tests_ns::A[]"); + CHECK(name_of() == "meta_tests_ns::A *"); + CHECK(name_of() == "meta_tests_ns::A &"); + CHECK(name_of() == "const meta_tests_ns::A &"); + + CHECK(name_of() == "int (meta_tests_ns::A::*)(int)"); + CHECK(name_of() == "int (*)(int)"); + CHECK(name_of() == "int meta_tests_ns::A::*"); + + CHECK(name_of() == "int"); + CHECK(name_of() == "float"); + + CHECK(name_of() == "void"); + CHECK(name_of() == "const void"); +#endif + +#if META_HPP_DETAIL_COMPILER_ID == META_HPP_DETAIL_GCC_COMPILER_ID + CHECK(name_of() == "meta_tests_ns::E"); + + CHECK(name_of() == "meta_tests_ns::A"); + CHECK(name_of() == "meta_tests_ns::A []"); + CHECK(name_of() == "meta_tests_ns::A*"); + CHECK(name_of() == "meta_tests_ns::A&"); + CHECK(name_of() == "const meta_tests_ns::A&"); + + CHECK(name_of() == "int (meta_tests_ns::A::*)(int)"); + CHECK(name_of() == "int (*)(int)"); + CHECK(name_of() == "int meta_tests_ns::A::*"); + + CHECK(name_of() == "int"); + CHECK(name_of() == "float"); + + CHECK(name_of() == "void"); + CHECK(name_of() == "const void"); +#endif + #if META_HPP_DETAIL_COMPILER_ID == META_HPP_DETAIL_MSVC_COMPILER_ID CHECK(name_of() == "enum meta_tests_ns::E"); diff --git a/headers/meta.hpp/meta_base/name_of.hpp b/headers/meta.hpp/meta_base/name_of.hpp index 0b19314..7659622 100644 --- a/headers/meta.hpp/meta_base/name_of.hpp +++ b/headers/meta.hpp/meta_base/name_of.hpp @@ -16,14 +16,14 @@ namespace meta_hpp::detail struct name_of_wrapper_impl {}; template < typename T > - [[nodiscard]] constexpr std::string_view name_of_impl() noexcept { + [[nodiscard]] constexpr auto name_of_impl() noexcept { #if META_HPP_DETAIL_COMPILER_ID == META_HPP_DETAIL_CLANG_COMPILER_ID - constexpr auto prefix = std::string_view{"[T = "}; - constexpr auto suffix = std::string_view{"]"}; + constexpr auto prefix = std::string_view{"name_of_wrapper_impl<"}; + constexpr auto suffix = std::string_view{">]"}; constexpr auto fnsign = std::string_view{__PRETTY_FUNCTION__}; #elif META_HPP_DETAIL_COMPILER_ID == META_HPP_DETAIL_GCC_COMPILER_ID - constexpr auto prefix = std::string_view{"with T = "}; - constexpr auto suffix = std::string_view{"]"}; + constexpr auto prefix = std::string_view{"name_of_wrapper_impl<"}; + constexpr auto suffix = std::string_view{">]"}; constexpr auto fnsign = std::string_view{__PRETTY_FUNCTION__}; #elif META_HPP_DETAIL_COMPILER_ID == META_HPP_DETAIL_MSVC_COMPILER_ID constexpr auto prefix = std::string_view{"name_of_wrapper_impl<"};