ProjectEuler 2 C++TMP
#include <iostream> template<int a,int b> struct intlt { static const bool value = a < b; }; template<bool inrange=true,int a=1,int b=1> struct fibsum { static const int value = fibsum<intlt<a+b,4000000>::value,b,a+b>::value + (b%2==0?b:0); }; template<int a,int b> struct fibsum<false,a,b> { static const int value = 0; }; int main() { std::cout << fibsum<>::value << std::endl; return 0; }