我有一些C 11代码使用自动推断类型,我必须转换为C 98.我将如何转换代码,替换为实际类型的所有实例的auto? 它将是一个PITA,但您可以声明一个不完整的结构体模板,接受一个单一的类型参
给定变量x你想知道的类型,你可以使用具有decltype(x)的结构,这将导致一个编译器错误,将显示推断的类型.
例如:
template<class Type> struct S; int main() { auto x = ...; S<decltype(x)>(); }
Live demo
这将产生以下形式的错误消息:
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视频中推荐的(我不记得哪一个).