59 template <
typename type>
60 struct get_display_name_size
64 static constexpr
auto get_size()
68 auto name_ptr = __PRETTY_FUNCTION__;
71 while (*name_ptr++ !=
'=')
74 for (; *name_ptr ==
' '; ++name_ptr)
78 char const * end_name_ptr = name_ptr;
81 for (; ; ++end_name_ptr)
83 switch (*end_name_ptr)
91 return size_t(end_name_ptr - name_ptr);
100 static constexpr
size_t value = get_size();
106 template <
typename type>
107 constexpr
size_t get_display_name_size_v = get_display_name_size<type>::value;
122 template <
typename type>
123 struct get_display_name
127 static constexpr
auto get_display_name_fn()
130 constexpr_string<get_display_name_size_v<type>> tmp{};
133 auto name_ptr = __PRETTY_FUNCTION__;
136 while (*name_ptr++ !=
'=')
139 for (; *name_ptr ==
' '; ++name_ptr)
142 for (
unsigned i = 0; i < tmp.size(); ++i, ++name_ptr)
150 static constexpr constexpr_string value = get_display_name_fn();
156 template <
typename type>
157 constexpr constexpr_string get_display_name_v = get_display_name<type>::value;
A constexpr string implementation to manipulate string literals at compile time.
Definition: aligned_sequence_concept.hpp:288