#include <iostream>
#include <utility>
template<class>
struct empty_type {};
template<class Head, class... Tail>
struct inheritance_chain : empty_type<Head>, inheritance_chain<Tail...> {};
template<class Head>
struct inheritance_chain<Head> : empty_type<Head> {};
template<class... T>
struct unreliable_has_duplicate :
std::integral_constant<bool, sizeof(inheritance_chain<T...>) != 1> {};
int main(int, char*[]) {
std::cout << std::boolalpha;
std::cout << unreliable_has_duplicate<float, float, int>::value << '\n';
std::cout << unreliable_has_duplicate<float, char, int>::value << '\n';
std::cout << unreliable_has_duplicate<int, int*, int**, int***, int*>::value << '\n';
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dXRpbGl0eT4KCnRlbXBsYXRlPGNsYXNzPgpzdHJ1Y3QgZW1wdHlfdHlwZSB7fTsKCnRlbXBsYXRlPGNsYXNzIEhlYWQsIGNsYXNzLi4uIFRhaWw+CnN0cnVjdCBpbmhlcml0YW5jZV9jaGFpbiA6IGVtcHR5X3R5cGU8SGVhZD4sIGluaGVyaXRhbmNlX2NoYWluPFRhaWwuLi4+IHt9OwoKdGVtcGxhdGU8Y2xhc3MgSGVhZD4Kc3RydWN0IGluaGVyaXRhbmNlX2NoYWluPEhlYWQ+IDogZW1wdHlfdHlwZTxIZWFkPiB7fTsKCnRlbXBsYXRlPGNsYXNzLi4uIFQ+CnN0cnVjdCB1bnJlbGlhYmxlX2hhc19kdXBsaWNhdGUgOgpzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHNpemVvZihpbmhlcml0YW5jZV9jaGFpbjxULi4uPikgIT0gMT4ge307CgppbnQgbWFpbihpbnQsIGNoYXIqW10pIHsKICBzdGQ6OmNvdXQgPDwgc3RkOjpib29sYWxwaGE7CiAgc3RkOjpjb3V0IDw8IHVucmVsaWFibGVfaGFzX2R1cGxpY2F0ZTxmbG9hdCwgZmxvYXQsIGludD46OnZhbHVlIDw8ICdcbic7CiAgc3RkOjpjb3V0IDw8IHVucmVsaWFibGVfaGFzX2R1cGxpY2F0ZTxmbG9hdCwgY2hhciwgaW50Pjo6dmFsdWUgPDwgJ1xuJzsKICBzdGQ6OmNvdXQgPDwgdW5yZWxpYWJsZV9oYXNfZHVwbGljYXRlPGludCwgaW50KiwgaW50KiosIGludCoqKiwgaW50Kj46OnZhbHVlIDw8ICdcbic7CiAgcmV0dXJuIDA7Cn0=