当这个变量是c.value计算吗?
编译时间?或运行时?
template<int A, typename T>
struct foo
{
static const T value = A + foo<A-1, T>::value;
};
template<typename T>
struct foo < 0, T >
{
static const T value = 0;
};
int main(void)
{
foo<4, int> c;
cout << c.value << endl;
return 1;
}
它递归地计算价值,但这个值是常量所以在运行时不会改变,那么我认为计算研究是在编译时确定。
是不是正确的想法?