Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中的一个成员枚举+;_C++_Enums - Fatal编程技术网

C++ C+中的一个成员枚举+;

C++ C+中的一个成员枚举+;,c++,enums,C++,Enums,我偶然发现了一个关于c++中整数幂的问题的答案: 我非常喜欢它,但我不太明白作者为什么显式地使用单元素枚举而不是某个整数类型。有人能解释一下吗?AFAIK这与旧编译器不允许定义编译时常量成员数据有关。使用C++11,您可以 template<int X, int P> struct Pow { static constexpr int result = X*Pow<X,P-1>::result; }; template<int X> struct Po

我偶然发现了一个关于c++中整数幂的问题的答案:


我非常喜欢它,但我不太明白作者为什么显式地使用单元素枚举而不是某个整数类型。有人能解释一下吗?

AFAIK这与旧编译器不允许定义编译时常量成员数据有关。使用C++11,您可以

template<int X, int P>
struct Pow
{
    static constexpr int result = X*Pow<X,P-1>::result;
};
template<int X>
struct Pow<X,0>
{
    static constexpr int result = 1;
};
template<int X>
struct Pow<X,1>
{
    static constexpr int result = X;
};

int main()
{
    std::cout << "pow(3,7) is " << Pow<3,7>::result << std::endl;
    return 0;   
}
模板
结构功率
{
静态constexpr int result=X*Pow::result;
};
模板
结构功率
{
静态constexpr int result=1;
};
模板
结构功率
{
静态constexpr int result=X;
};
int main()
{

std::cout@NPE这是“投票结束”的完美候选人: