我有一些使用 auto
推断类型的 C++11 代码,我必须将其转换为 C++98。我将如何转换代码,用实际类型替换 auto
的所有实例?
最佳答案
它将是一个 PITA,但您可以声明一个不完整的结构模板,接受单个类型参数。
给定变量 x
您想知道其类型,您可以将结构与 decltype(x)
一起使用,这将导致编译器错误,该错误将显示你是推断的类型。
例如:
template<class Type> struct S;
int main() {
auto x = ...;
S<decltype(x)>();
}
这将产生如下形式的错误消息:
error: implicit instantiation of undefined template 'S<X>' (clang++)
error: invalid use of incomplete type 'struct S<X>' (g++)
其中 X
是推断的类型。在这种特殊情况下,类型是 int
。
琐事:这是 Scott Meyer 在最近的 NDC 2014 视频之一中推荐的(我不记得是哪一个)。
关于c++ - 在不执行程序的情况下在 C++11 中检索 auto 的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24441505/