首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用clang c++1z作为非类型模板参数的extern数组

用clang c++1z作为非类型模板参数的extern数组
EN

Stack Overflow用户
提问于 2016-07-01 13:44:36
回答 1查看 696关注 0票数 4
代码语言:javascript
复制
template<int const * pci> struct X {};
extern int const ai[];
X<ai> xi;
int const ai[] = {0,1,2,3};

如果我试图用"clang++ -std=c++1z“编译此代码,则会导致错误:

test.cpp:4:3: error:非类型模板参数引用子对象'&ai‘

但这不是次目标。

参数在非类型参数的“(自C++17)”部分中没有列出对extern数组的任何适当限制。

这样的代码在-std=c++14中运行良好。GCC也在c++1z模式下编译它,没有错误:https://godbolt.org/g/K9wZ4g

是叮当虫吗?还是这段代码错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-07 00:17:45

是的,这是一个clang bug,得到了clang开发人员的确认,并且已经修复到主干(r311970)中。http://lists.llvm.org/pipermail/cfe-dev/2017-August/055249.html

同时,为了解决这个问题,您需要显式地在声明中写入数组的长度。

代码语言:javascript
复制
extern int const ai[4];
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38147062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档