参见英文答案 >
constexpr not working if the function is declared inside class scope3个
为什么以下C代码无法用VC2017编译?
为什么以下C代码无法用VC2017编译?
struct FixedMatchResults { static constexpr std::size_t count() { return 20; }; std::array<int,count()> results; };
错误是:
error C2975: ‘_Size’: invalid template argument for ‘std::array’,
expected compile-time constant expression
解决方法
在完整的结构定义之后解析函数体.这是为了允许您可能引用在函数体之后定义的其他成员.
但是,这意味着当编译器解析结果时,它没有count函数的主体,因此无法运行它.
有关更详细的答案,请参阅此问题:constexpr not working if the function is declared inside class scope