無題
問題設定はnを1から初めてその2乗を足していき、和が2000を初めて超えたとき和はいくつになるかという問題を考えます。通常の、C++ 言語で考えれば以下のようになるでしょうか。
んー、次のどっちかかなあ:
template <bool cont = true, int x = 1, int sum = 0> struct hoge { static const int value = hoge<sum + x * x < 2000, x + 1, sum + x * x>::value; }; template <int x, int sum> struct hoge<false, x, sum> { static const int value = sum; }; int main(int argc, char* argv[]) { int sum = 0; for (int i = 1 ; sum < 2000 ; sum += i*i, ++i); assert( hoge<>::value == sum ); return 0; }