#include <iostream>
#include <utility>
template<typename... T>
struct Wrapper;
template<typename F, typename... T>
struct Wrapper<F,T...>{ };
template<typename T>
struct is_wrapper : std::false_type {};
template<typename... T>
struct is_wrapper<Wrapper<T...>> : std::true_type {};
//template<typename F, typename... T>
//struct is_wrapper<Wrapper<F, T...>> : std::true_type {};
using my_wrapper_type = Wrapper<int,double>;
int main()
{
std::cout << std::boolalpha << is_wrapper<my_wrapper_type>::value << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dXRpbGl0eT4KCnRlbXBsYXRlPHR5cGVuYW1lLi4uIFQ+CnN0cnVjdCBXcmFwcGVyOwoKdGVtcGxhdGU8dHlwZW5hbWUgRiwgdHlwZW5hbWUuLi4gVD4Kc3RydWN0IFdyYXBwZXI8RixULi4uPnsgfTsKCgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpzdHJ1Y3QgaXNfd3JhcHBlciA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKCnRlbXBsYXRlPHR5cGVuYW1lLi4uIFQ+CnN0cnVjdCBpc193cmFwcGVyPFdyYXBwZXI8VC4uLj4+IDogc3RkOjp0cnVlX3R5cGUge307CgovL3RlbXBsYXRlPHR5cGVuYW1lIEYsIHR5cGVuYW1lLi4uIFQ+Ci8vc3RydWN0IGlzX3dyYXBwZXI8V3JhcHBlcjxGLCBULi4uPj4gOiBzdGQ6OnRydWVfdHlwZSB7fTsKCgp1c2luZyBteV93cmFwcGVyX3R5cGUgPSBXcmFwcGVyPGludCxkb3VibGU+OwoKaW50IG1haW4oKQp7CiAgICBzdGQ6OmNvdXQgPDwgc3RkOjpib29sYWxwaGEgIDw8IGlzX3dyYXBwZXI8bXlfd3JhcHBlcl90eXBlPjo6dmFsdWUgPDwgc3RkOjplbmRsOwp9Cg==