模板中的无名枚举

4 c++ templates

很多模板化的代码看起来像这样:

template <typename T>
class foo
{
   enum { value = <some expr with T> };
};
Run Code Online (Sandbox Code Playgroud)

一个例子可以看出这里的主要检查程序,我已经在阶乘实现看过一次了.

我的问题是为什么要使用无名的枚举?这有什么特别的原因吗?例如,静态const int也可以起作用吗?

编辑:

@Benoît:感谢您的链接,它提供了我所寻找的洞察力!

Ben*_*oît 8

静态const变量将占用内存(如Sean所说),而枚举不占用任何内存.它们只存在于编译器的世界中.在运行时,它们只是常规整数.

除此之外它将起作用,除了编译器对标准的不良实现.

有一个彻底的线程在boost邮件列表的主题: