gpt4 book ai didi

c++ - C2057 : expected constant expression

转载 作者:行者123 更新时间:2023-11-30 04:06:02 24 4
gpt4 key购买 nike

我无法在 VS2013 上编译它,但它可以在 gcc 4.7.2 上编译。我知道 VC++ 在功能方面落后于 GCC 和 CLang,但它到底是什么功能,如果不是,这就是一个错误,不是吗?

template <int N>
struct factorial
{
static const long value;
static const long previous = factorial<N - 1>::value; //C2057: expected constant expression
};

template <int N>
const long factorial<N>::value = N*factorial<N - 1>::value;

template <>
struct factorial<0>
{
static const long value = 1;
};

请不要告诉我如何解决此问题,因为这不是生产代码,我也不需要。例如我可以在类中定义值,问题就解决了,但假设我必须在类外定义它(VC2013 仍然不支持 constexpr)

最佳答案

MSVC 没有适当的两阶段模板编译。 GCC 正确地看到 factorial<N - 1>::value作为从属名称并在第二阶段解析,但 MSVC 必须在第一阶段完成。

关于c++ - C2057 : expected constant expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23054793/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com