为什么以下C ++代码无法在VC2017中编译?
struct FixedMatchResults
{
static constexpr std::size_t count() { return 20; };
std::array<int, count()> results;
};
错误是:
错误C2975:“ _ Size”:“ std :: array”的无效模板参数, 预期的编译时常量表达式
答案 0 :(得分:2)
在完整的struct定义之后解析函数的主体。这是为了允许您潜在地引用在函数主体之后定义的其他成员。
但是,这意味着当编译器解析results
时,它没有count
函数的主体,因此它无法运行。
有关更详细的答案,请参阅以下问题:constexpr not working if the function is declared inside class scope