當這個變量是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;
}
它遞歸地計算價值,但這個值是常量所以在運行時不會改變,那麼我認爲計算研究是在編譯時確定。
是不是正確的想法?