小编Ant*_*973的帖子

可以将平凡的整数常量变量始终用作模板值吗?

这个问题类似于这一个,但更具体的预C ++ 11种的情景。

我注意到使用 Clang 和 g++,以下编译器可以在 pre-c++11 中正常运行:

enum En { V0 = 0 };

template <int SZ> class C { };
template <En EN> class E { };

int main() {
    const int SIZE = 42;
    C<SIZE> c;
    const int SIZE2 = SIZE ^ 0xDEADBEEF;
    C<SIZE2> c2;
    const En E1 = V0;
    E<E1> e1;
}
Run Code Online (Sandbox Code Playgroud)

在没有constexpr可用的上下文中,这样做非常方便,在某些情况下甚至可能是必要的。那么这是否保证有效,还是 g++ 和 Clang 只是为了方便而推断这些值?

c++ templates

2
推荐指数
1
解决办法
49
查看次数

标签 统计

c++ ×1

templates ×1