变量名有什么办法,用C++ 11,得到一个变量,它是一个(可能是静态)constexpr的名称。C++ 11打印运行时间等于一些constexpr变量
例如:
struct Foo{
int x, y, z;
};
constexpr Foo PrintMe = { 1, 2, 3};
我想获得一个字符串 “PrintMe” 不知何故。
我知道,我可以用这样的宏:
#define NAME_OF(v) #v
,并呼吁
std::cout << NAME_OF(PrintMe) << std::endl;
,它将打印
PrintMe
是否有办法到g et以下打印相同?
Foo a = PrintMe;
std::cout << Magic(a) << std::endl;
编辑: 我不是在寻找一些神奇的解决方案,这将使呼叫Magic(a)
工作。我明白,做一些事情来适应我想要的需要定义一些宏或模板。 像枚举可以以某种方式进行打印(How to convert an enum type variable to a string?
你在找什么叫反射,它不是C++的一部分。 – NathanOliver
编号顺便说一句,它与'constexpr'有什么关系。这在C++中是不可能的,无论它是否是“constexpr”。 – Nawaz
此外,您的标题是误导。你有办法打印编译时间变量,你正在寻找打印运行时变量。 – NathanOliver