很多模板化代码如下所示:
template <typename T>
class foo
{
enum { value = <some expr with T> };
};
在主要检查计划中可以看到一个例子here,我也曾在Factorial实施中看到它。
我的问题是为什么要使用无名的枚举?这有什么特别的原因吗? 例如,静态const int可以起作用吗?
编辑:
@Benoît:感谢您的链接,它提供了我一直在寻找的洞察力!
答案 0 :(得分:8)
静态const变量将占用内存(如Sean所说),而枚举不占用任何内存。它们只存在于编译器的世界中。在运行时,它们只是常规整数。
除此之外,它可以工作,除了编译器对标准的不良实现。
对于boost邮件列表中的主题有一个彻底的thread:
答案 1 :(得分:3)
如果我没记错的话,静态const会要求你通过声明和定义变量来分配空间,而未命名的枚举则不需要。