当前位置 : 主页 > 网络推广 > seo >

检索C 11中的auto类型,而不执行程序

来源:互联网 收集:自由互联 发布时间:2021-06-16
我有一些C 11代码使用自动推断类型,我必须转换为C 98.我将如何转换代码,替换为实际类型的所有实例的auto? 它将是一个PITA,但您可以声明一个不完整的结构体模板,接受一个单一的类型参
我有一些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视频中推荐的(我不记得哪一个).

网友评论