#include <cstdint>
template < uint64_t Cur, uint64_t Goal>
struct adder{
static uint64_t const sub_goal = ( Cur + Goal) / 2 ;
static uint64_t const tmp = adder< Cur, sub_goal> :: value ;
static uint64_t const value = tmp + adder< sub_goal+ 1 , Goal> :: value ;
} ;
template < uint64_t Goal>
struct adder< Goal, Goal> {
static uint64_t const value = Goal;
} ;
template < uint64_t Start>
struct sum_from{
template < uint64_t Goal>
struct to{
template < uint64_t N>
struct equals;
typedef equals< adder< Start, Goal> :: value > result;
} ;
} ;
int main( ) {
sum_from< 1 > :: to < 250000 > :: result ( ) ;
}
I2luY2x1ZGUgPGNzdGRpbnQ+Cgp0ZW1wbGF0ZTx1aW50NjRfdCBDdXIsIHVpbnQ2NF90IEdvYWw+CnN0cnVjdCBhZGRlcnsKICBzdGF0aWMgdWludDY0X3QgY29uc3Qgc3ViX2dvYWwgPSAoQ3VyICsgR29hbCkgLyAyOwogIHN0YXRpYyB1aW50NjRfdCBjb25zdCB0bXAgPSBhZGRlcjxDdXIsIHN1Yl9nb2FsPjo6dmFsdWU7CiAgc3RhdGljIHVpbnQ2NF90IGNvbnN0IHZhbHVlID0gdG1wICsgYWRkZXI8c3ViX2dvYWwrMSwgR29hbD46OnZhbHVlOwp9OwogCnRlbXBsYXRlPHVpbnQ2NF90IEdvYWw+CnN0cnVjdCBhZGRlcjxHb2FsLCBHb2FsPnsKICBzdGF0aWMgdWludDY0X3QgY29uc3QgdmFsdWUgPSBHb2FsOwp9OwogCnRlbXBsYXRlPHVpbnQ2NF90IFN0YXJ0PgpzdHJ1Y3Qgc3VtX2Zyb217CiAgdGVtcGxhdGU8dWludDY0X3QgR29hbD4KICBzdHJ1Y3QgdG97CiAgICB0ZW1wbGF0ZTx1aW50NjRfdCBOPgogICAgc3RydWN0IGVxdWFsczsKIAogICAgdHlwZWRlZiBlcXVhbHM8YWRkZXI8U3RhcnQsIEdvYWw+Ojp2YWx1ZT4gcmVzdWx0OwogIH07Cn07CiAKaW50IG1haW4oKXsKICBzdW1fZnJvbTwxPjo6dG88MjUwMDAwPjo6cmVzdWx0KCk7Cn0K
compilation info
prog.cpp: In function 'int main()':
prog.cpp:27:35: error: invalid use of incomplete type 'struct sum_from<1ull>::to<250000ull>::result'
prog.cpp:20:12: error: declaration of 'struct sum_from<1ull>::to<250000ull>::result'
g++: Internal error: Segmentation fault (program cc1plus)
Please submit a full bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.
stdout