ProjectEuler 3 C++TMP
#include <iostream> template<long long int p,long long int i=2> struct p3 { //static const bool per = p%i==0; static const long long int value = p3<p%i==0?p/i:p,p%i==0?i:i+1>::value; }; template<long long int p> struct p3<p,p> { static const long long int value = p; }; int main() { std::cout << p3<600851475143LL>::value << std::endl; }