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 std::free(s);
27 }
28#endif
29
31 name += " const";
33 name += " volatile";
35 {
36 name += "&";
37 }
39 {
40 name += "&&";
41 }
42
43 return name;
44}
45
46} // 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