从 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