#include <iostream>
template <typename T>
struct id {
using type = T;
};
template <typename T>
struct force_match : T {};
template <typename T>
struct force : force_match<typename T::type> {};
template <template <typename...> class T, typename... Args>
struct force_match<T<Args...>> : T<typename force<Args>::type...> {};
template <int N>
struct int_ : id<int_<N>> {
static constexpr int value = N;
};
template <typename A, typename B>
struct plus_match {};
template <typename A, typename B>
struct plus : plus_match<typename A::type, typename B::type> {};
template <int A, int B>
struct plus_match<int_<A>, int_<B>> : int_<A + B> {};
template <typename A, typename B>
struct minus_match {};
template <typename A, typename B>
struct minus : minus_match<typename A::type, typename B::type> {};
template <int A, int B>
struct minus_match<int_<A>, int_<B>> : int_<A - B> {};
template <typename A, typename B>
struct mul_match {};
template <typename A, typename B>
struct mul : mul_match<typename A::type, typename B::type> {};
template <int A, int B>
struct mul_match<int_<A>, int_<B>> : int_<A * B> {};
template <typename N>
struct dec : minus<N, int_<1>> {};
template <bool B>
struct bool_ : id<bool_<B>> {
static constexpr bool value = B;
};
using true_ = bool_<true>;
using false_ = bool_<false>;
template <typename A, typename B>
struct eq_match : false_ {};
template <typename A, typename B>
struct eq : eq_match<typename A::type, typename B::type> {};
template <typename T>
struct eq_match<T, T> : true_ {};
template <typename Cond, typename Then, typename Else>
struct if_match {};
template <typename Cond, typename Then, typename Else>
struct if_ : if_match<typename Cond::type, Then, Else> {};
template <typename Then, typename Else>
struct if_match<true_, Then, Else> : Then::type {};
template <typename Then, typename Else>
struct if_match<false_, Then, Else> : Else::type {};
template <typename N>
struct factorial : if_< eq<N, int_<0>>
, int_<1>
, mul<N, factorial<dec<N>>>> {};
int main() {
std::cout << force< factorial<int_<4>> >::type::value << std::endl;
std::cout << force< factorial<int_<-3>> >::value << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnN0cnVjdCBpZCB7Cgl1c2luZyB0eXBlID0gVDsKfTsKCgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4Kc3RydWN0IGZvcmNlX21hdGNoIDogVCB7fTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpzdHJ1Y3QgZm9yY2UgOiBmb3JjZV9tYXRjaDx0eXBlbmFtZSBUOjp0eXBlPiB7fTsKCnRlbXBsYXRlIDx0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4+IGNsYXNzIFQsIHR5cGVuYW1lLi4uIEFyZ3M+CnN0cnVjdCBmb3JjZV9tYXRjaDxUPEFyZ3MuLi4+PiA6IFQ8dHlwZW5hbWUgZm9yY2U8QXJncz46OnR5cGUuLi4+IHt9OwoKCnRlbXBsYXRlIDxpbnQgTj4Kc3RydWN0IGludF8gOiBpZDxpbnRfPE4+PiB7CglzdGF0aWMgY29uc3RleHByIGludCB2YWx1ZSA9IE47Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgQj4Kc3RydWN0IHBsdXNfbWF0Y2gge307Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgQj4Kc3RydWN0IHBsdXMgOiBwbHVzX21hdGNoPHR5cGVuYW1lIEE6OnR5cGUsIHR5cGVuYW1lIEI6OnR5cGU+IHt9OwoKdGVtcGxhdGUgPGludCBBLCBpbnQgQj4Kc3RydWN0IHBsdXNfbWF0Y2g8aW50XzxBPiwgaW50XzxCPj4gOiBpbnRfPEEgKyBCPiB7fTsKCgp0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgQj4Kc3RydWN0IG1pbnVzX21hdGNoIHt9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEI+CnN0cnVjdCBtaW51cyA6IG1pbnVzX21hdGNoPHR5cGVuYW1lIEE6OnR5cGUsIHR5cGVuYW1lIEI6OnR5cGU+IHt9OwoKdGVtcGxhdGUgPGludCBBLCBpbnQgQj4Kc3RydWN0IG1pbnVzX21hdGNoPGludF88QT4sIGludF88Qj4+IDogaW50XzxBIC0gQj4ge307CgoKdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEI+CnN0cnVjdCBtdWxfbWF0Y2gge307Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgQj4Kc3RydWN0IG11bCA6IG11bF9tYXRjaDx0eXBlbmFtZSBBOjp0eXBlLCB0eXBlbmFtZSBCOjp0eXBlPiB7fTsKCnRlbXBsYXRlIDxpbnQgQSwgaW50IEI+CnN0cnVjdCBtdWxfbWF0Y2g8aW50XzxBPiwgaW50XzxCPj4gOiBpbnRfPEEgKiBCPiB7fTsKCgp0ZW1wbGF0ZSA8dHlwZW5hbWUgTj4Kc3RydWN0IGRlYyA6IG1pbnVzPE4sIGludF88MT4+IHt9OwoKCnRlbXBsYXRlIDxib29sIEI+CnN0cnVjdCBib29sXyA6IGlkPGJvb2xfPEI+PiB7CglzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSBCOwp9OwoKCnVzaW5nIHRydWVfID0gYm9vbF88dHJ1ZT47CnVzaW5nIGZhbHNlXyA9IGJvb2xfPGZhbHNlPjsKCgp0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgQj4Kc3RydWN0IGVxX21hdGNoIDogZmFsc2VfIHt9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEI+CnN0cnVjdCBlcSA6IGVxX21hdGNoPHR5cGVuYW1lIEE6OnR5cGUsIHR5cGVuYW1lIEI6OnR5cGU+IHt9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnN0cnVjdCBlcV9tYXRjaDxULCBUPiA6IHRydWVfIHt9OwoKCnRlbXBsYXRlIDx0eXBlbmFtZSBDb25kLCB0eXBlbmFtZSBUaGVuLCB0eXBlbmFtZSBFbHNlPgpzdHJ1Y3QgaWZfbWF0Y2gge307Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29uZCwgdHlwZW5hbWUgVGhlbiwgdHlwZW5hbWUgRWxzZT4Kc3RydWN0IGlmXyA6IGlmX21hdGNoPHR5cGVuYW1lIENvbmQ6OnR5cGUsIFRoZW4sIEVsc2U+IHt9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFRoZW4sIHR5cGVuYW1lIEVsc2U+CnN0cnVjdCBpZl9tYXRjaDx0cnVlXywgVGhlbiwgRWxzZT4gOiBUaGVuOjp0eXBlIHt9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFRoZW4sIHR5cGVuYW1lIEVsc2U+CnN0cnVjdCBpZl9tYXRjaDxmYWxzZV8sIFRoZW4sIEVsc2U+IDogRWxzZTo6dHlwZSB7fTsKCgoKdGVtcGxhdGUgPHR5cGVuYW1lIE4+CnN0cnVjdCBmYWN0b3JpYWwgOiBpZl88IGVxPE4sIGludF88MD4+CiAgICAgICAgICAgICAgICAgICAgICAsIGludF88MT4KICAgICAgICAgICAgICAgICAgICAgICwgbXVsPE4sIGZhY3RvcmlhbDxkZWM8Tj4+Pj4ge307CgoKaW50IG1haW4oKSB7CgkKCXN0ZDo6Y291dCA8PCBmb3JjZTwgZmFjdG9yaWFsPGludF88ND4+ID46OnR5cGU6OnZhbHVlIDw8IHN0ZDo6ZW5kbDsKCQoJc3RkOjpjb3V0IDw8IGZvcmNlPCBmYWN0b3JpYWw8aW50XzwtMz4+ID46OnZhbHVlIDw8IHN0ZDo6ZW5kbDsKCQoJcmV0dXJuIDA7Cn0K
prog.cpp:20:8: error: template instantiation depth exceeds maximum of 900 (use -ftemplate-depth= to increase the maximum) instantiating ‘struct id<int_<-226> >’
struct int_ : id<int_<N>> {
^
prog.cpp:20:8: required from ‘struct int_<-226>’
prog.cpp:41:8: required from ‘struct minus_match<int_<-225>, int_<1> >’
prog.cpp:38:8: required from ‘struct minus<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, int_<1> >’
prog.cpp:55:8: required from ‘struct dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >’
prog.cpp:72:8: required from ‘struct eq<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, int_<0> >’
prog.cpp:82:8: [ skipping 890 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
prog.cpp:48:8: required from ‘struct mul<int_<-3>, factorial<dec<int_<-3> > > >’
prog.cpp:88:8: required from ‘struct if_match<bool_<false>, int_<1>, mul<int_<-3>, factorial<dec<int_<-3> > > > >’
prog.cpp:82:8: required from ‘struct if_<eq<int_<-3>, int_<0> >, int_<1>, mul<int_<-3>, factorial<dec<int_<-3> > > > >’
prog.cpp:93:8: required from ‘struct factorial<int_<-3> >’
prog.cpp:13:8: required from ‘struct force<factorial<int_<-3> > >’
prog.cpp:102:43: required from here
prog.cpp:20:8: error: invalid use of incomplete type ‘struct id<int_<-226> >’
prog.cpp:4:8: error: declaration of ‘struct id<int_<-226> >’
struct id {
^
prog.cpp: In instantiation of ‘struct eq<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, int_<0> >’:
prog.cpp:82:8: required from ‘struct if_<eq<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, int_<0> >, int_<1>, mul<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, factorial<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >’
prog.cpp:93:8: required from ‘struct factorial<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >’
prog.cpp:48:8: required from ‘struct mul<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, factorial<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >’
prog.cpp:88:8: required from ‘struct if_match<bool_<false>, int_<1>, mul<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, factorial<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >’
prog.cpp:82:8: required from ‘struct if_<eq<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, int_<0> >, int_<1>, mul<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, factorial<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >’
prog.cpp:93:8: [ skipping 885 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
prog.cpp:48:8: required from ‘struct mul<int_<-3>, factorial<dec<int_<-3> > > >’
prog.cpp:88:8: required from ‘struct if_match<bool_<false>, int_<1>, mul<int_<-3>, factorial<dec<int_<-3> > > > >’
prog.cpp:82:8: required from ‘struct if_<eq<int_<-3>, int_<0> >, int_<1>, mul<int_<-3>, factorial<dec<int_<-3> > > > >’
prog.cpp:93:8: required from ‘struct factorial<int_<-3> >’
prog.cpp:13:8: required from ‘struct force<factorial<int_<-3> > >’
prog.cpp:102:43: required from here
prog.cpp:72:8: error: no type named ‘type’ in ‘struct dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >’
struct eq : eq_match<typename A::type, typename B::type> {};
^
prog.cpp: In instantiation of ‘struct if_<eq<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, int_<0> >, int_<1>, mul<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, factorial<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >’:
prog.cpp:93:8: required from ‘struct factorial<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >’
prog.cpp:48:8: required from ‘struct mul<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, factorial<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >’
prog.cpp:88:8: required from ‘struct if_match<bool_<false>, int_<1>, mul<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, factorial<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >’
prog.cpp:82:8: required from ‘struct if_<eq<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, int_<0> >, int_<1>, mul<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, factorial<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >’
prog.cpp:93:8: required from ‘struct factorial<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >’
prog.cpp:48:8: [ skipping 884 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
prog.cpp:48:8: required from ‘struct mul<int_<-3>, factorial<dec<int_<-3> > > >’
prog.cpp:88:8: required from ‘struct if_match<bool_<false>, int_<1>, mul<int_<-3>, factorial<dec<int_<-3> > > > >’
prog.cpp:82:8: required from ‘struct if_<eq<int_<-3>, int_<0> >, int_<1>, mul<int_<-3>, factorial<dec<int_<-3> > > > >’
prog.cpp:93:8: required from ‘struct factorial<int_<-3> >’
prog.cpp:13:8: required from ‘struct force<factorial<int_<-3> > >’
prog.cpp:102:43: required from here
prog.cpp:82:8: error: no type named ‘type’ in ‘struct eq<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, int_<0> >’
struct if_ : if_match<typename Cond::type, Then, Else> {};
^
prog.cpp: In instantiation of ‘struct mul<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, factorial<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >’:
prog.cpp:88:8: required from ‘struct if_match<bool_<false>, int_<1>, mul<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, factorial<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >’
prog.cpp:82:8: required from ‘struct if_<eq<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, int_<0> >, int_<1>, mul<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, factorial<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >’
prog.cpp:93:8: required from ‘struct factorial<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >’
prog.cpp:48:8: required from ‘struct mul<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, factorial<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >’
prog.cpp:88:8: required from ‘struct if_match<bool_<false>, int_<1>, mul<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, factorial<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >’
prog.cpp:82:8: [ skipping 882 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
prog.cpp:48:8: required from ‘struct mul<int_<-3>, factorial<dec<int_<-3> > > >’
prog.cpp:88:8: required from ‘struct if_match<bool_<false>, int_<1>, mul<int_<-3>, factorial<dec<int_<-3> > > > >’
prog.cpp:82:8: required from ‘struct if_<eq<int_<-3>, int_<0> >, int_<1>, mul<int_<-3>, factorial<dec<int_<-3> > > > >’
prog.cpp:93:8: required from ‘struct factorial<int_<-3> >’
prog.cpp:13:8: required from ‘struct force<factorial<int_<-3> > >’
prog.cpp:102:43: required from here
prog.cpp:48:8: error: no type named ‘type’ in ‘struct factorial<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >’
struct mul : mul_match<typename A::type, typename B::type> {};
^
prog.cpp: In instantiation of ‘struct if_match<bool_<false>, int_<1>, mul<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >, factorial<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >’:
prog.cpp:82:8: required from ‘struct if_<eq<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<dec<int_<-3> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >