C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 使用extern const将结构传递给模板.什么是extern?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我问自己为什么下面的代码工作,以及在实例化baz_instance时specifier extern所做的内容
struct baz {
    int value;
};

extern const baz baz_instance = {3};

template<baz const& b>
int foo(){
    return b.value;
}

int main(){
    foo<baz_instance>();
    return 1;
}

为什么上面的代码首先编译,为什么不编译extern说明符呢?这个例子中extern说明符是做什么的?

解决方法

这是标准的一部分,从C 03改为C 11.

在C 03中,[temp.arg.nontype]读取:

在C11中,由于issue 1155,GCC仍然有a bug的这种行为:

在C 14中,这进一步简化,甚至没有提及联动.

对于您的具体问题,外部说明符将添加外部链接到baz_instance.没有它,baz_instance有内部联系.在C 03中,您需要外部链接才能使用引用类型的非类型模板参数.在C 11中,你不再需要 – 所以extern不再需要了,没有它就可以编译好.

大佬总结

以上是大佬教程为你收集整理的c – 使用extern const将结构传递给模板.什么是extern?全部内容,希望文章能够帮你解决c – 使用extern const将结构传递给模板.什么是extern?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。