在处理一些“有趣”的constexpr东西时,我试图强制在编译时对函数进行求值,也想知道为什么它会失败,并尝试将大小强制为静态数组,因为我(错误地)认为静态数组就像需要在编译时评估其大小。看起来像这样:
template<typename... Args>
constexpr int endlessReccursion() {
return 1 + endlessReccursion<Args...>();
}
int main() {
int arr[endlessReccursion<double,int>()];
}
而这奇怪地足以编译。事实证明,尽管我相信这是对的,但在ISO C ++标准中,gcc和clang都允许dyn数组不属于C99标准,这使我想到...还有其他常用的,特定于编译器的吗?还是我应该了解的非标准C ++陷阱?