20#if defined(__clang__) || defined(__GNUC__)
21 constexpr std::string_view func_name = __PRETTY_FUNCTION__;
22 constexpr std::string_view begin_key =
"T = ";
23 constexpr std::string_view end_key =
";]";
25 auto start_pos = func_name.find(begin_key) + begin_key.size();
26 auto end_pos = func_name.find_first_of(end_key, start_pos);
27 return func_name.substr(start_pos, end_pos - start_pos);
28#elif defined(_MSC_VER)
29 constexpr std::string_view func_name = __FUNCSIG__;
30 constexpr std::string_view begin_key =
"type_name<";
31 constexpr char end_key =
'>';
33 auto start_pos = func_name.find(begin_key) + begin_key.size();
34 auto end_pos = func_name.find(end_key, start_pos);
35 return func_name.substr(start_pos, end_pos - start_pos);
37 return typeid(T).name();