从 typename 获取 type_info
Get type_info from typename
有没有办法从类型名称中获取 std::type_info
?例如,
std::type_info f(std::string name) {
std::type_info info;
...
return info;
}
int main() {
const std::string name = typeid(double).name();
std::type_info info = f(name);
assert(info==typeid(double));
}
函数 f
是什么?
没有。正如 documentation for std::type_info::name
所说:
No guarantees are given; in particular, the returned string can be
identical for several types and change between invocations of the same
program.
我不知道您的确切用例,但您可以改用 C++11 std::type_index
。
有没有办法从类型名称中获取 std::type_info
?例如,
std::type_info f(std::string name) {
std::type_info info;
...
return info;
}
int main() {
const std::string name = typeid(double).name();
std::type_info info = f(name);
assert(info==typeid(double));
}
函数 f
是什么?
没有。正如 documentation for std::type_info::name
所说:
No guarantees are given; in particular, the returned string can be identical for several types and change between invocations of the same program.
我不知道您的确切用例,但您可以改用 C++11 std::type_index
。