ProjectEuler 1 C++TMP
#include <iostream> template<int i=0> struct sum35 { static const int value = sum35<i+1>::value + ((i%3==0 || i%5==0)?i:0); }; template<> struct sum35<1000> { static const int value = 0; }; int main() { std::cout << sum35<0>::value << std::endl; return 0; }