30#if defined(__clang__) || defined(__GNUC__)
31 constexpr std::string_view func_name = __PRETTY_FUNCTION__;
32 constexpr std::string_view begin_key =
"T = ";
33 constexpr std::string_view end_key =
";]";
35 auto start_pos = func_name.find(begin_key) + begin_key.size();
36 auto end_pos = func_name.find_first_of(end_key, start_pos);
37 return func_name.substr(start_pos, end_pos - start_pos);
38#elif defined(_MSC_VER)
39 constexpr std::string_view func_name = __FUNCSIG__;
40 constexpr std::string_view begin_key =
"type_name<";
41 constexpr char end_key =
'>';
43 auto start_pos = func_name.find(begin_key) + begin_key.size();
44 auto end_pos = func_name.find(end_key, start_pos);
45 return func_name.substr(start_pos, end_pos - start_pos);
47 return typeid(T).name();