从std :: string,C++获取类型

Edu*_*yan 6 c++ algorithm types character-encoding stdstring

在面试中我被问到一个问题.

因此我有一个函数void f(std::string),我称之为函数f("int").所以我的函数必须int x在它的体内创建一个局部.有没有办法从中获取类型const char*.我知道boost::mpl::vector确实可以解决这类问题.谁能告诉我这项技术?

Rei*_*ica 4

如果应该支持用户定义的类型,那么如果不提供显式映射,这是不可能的。但对于仅内置类型,这是可以完成的。您可以实现类型定义的解析器,并将其与函数模板结合起来,迭代地构造类型。像这样的东西:

template <class T>
void parseType(std::string type)
{
  std::string spec = extractOneSpecifierFrom(type);
  if (spec == "[]") {
    parseType<T[]>(type);
  } else if (spec == "*") {
    parseType<T*>(type);
  } else if (spec == "const") {
    parseType<const T>(type);
  } // ... etc.
}
Run Code Online (Sandbox Code Playgroud)