xrpld
Loading...
Searching...
No Matches
type_name.h
1#pragma once
2
3#include <cstdlib>
4#include <string>
5#include <type_traits>
6#include <typeinfo>
7
8#ifndef _MSC_VER
9#include <cxxabi.h>
10#endif
11
12namespace beast {
13
14template <typename T>
15std::string
17{
19
20 std::string name = typeid(TR).name();
21
22#ifndef _MSC_VER
23 if (auto s = abi::__cxa_demangle(name.c_str(), nullptr, nullptr, nullptr))
24 {
25 name = s;
26 // NOLINTNEXTLINE(cppcoreguidelines-no-malloc)
27 std::free(s);
28 }
29#endif
30
32 name += " const";
34 name += " volatile";
36 {
37 name += "&";
38 }
40 {
41 name += "&&";
42 }
43
44 return name;
45}
46
47} // namespace beast
T c_str(T... args)
T free(T... args)
T is_const_v
T is_lvalue_reference_v
T is_rvalue_reference_v
T is_volatile_v
std::string typeName()
Definition type_name.h:16