#include <type_traits>
#include <iostream>
template <typename T>
struct is_type_templated : std::false_type {};
template <template <typename...> class C, typename ... Ts>
struct is_type_templated<C<Ts...>> : std::true_type {};
class A{};
template<typename T>
class B{};
int main()
{
std::cout << std::boolalpha << is_type_templated<A>::value << std::endl;
std::cout << std::boolalpha << is_type_templated<B<A>>::value << std::endl;
}
I2luY2x1ZGUgPHR5cGVfdHJhaXRzPgojaW5jbHVkZSA8aW9zdHJlYW0+CgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnN0cnVjdCBpc190eXBlX3RlbXBsYXRlZCA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKCnRlbXBsYXRlIDx0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4+IGNsYXNzIEMsIHR5cGVuYW1lIC4uLiBUcz4Kc3RydWN0IGlzX3R5cGVfdGVtcGxhdGVkPEM8VHMuLi4+PiA6IHN0ZDo6dHJ1ZV90eXBlIHt9OwoKY2xhc3MgQXt9OwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KY2xhc3MgQnt9OwoKCmludCBtYWluKCkKewogICAgc3RkOjpjb3V0IDw8IHN0ZDo6Ym9vbGFscGhhIDw8IGlzX3R5cGVfdGVtcGxhdGVkPEE+Ojp2YWx1ZSA8PCBzdGQ6OmVuZGw7CiAgICBzdGQ6OmNvdXQgPDwgc3RkOjpib29sYWxwaGEgPDwgaXNfdHlwZV90ZW1wbGF0ZWQ8QjxBPj46OnZhbHVlIDw8IHN0ZDo6ZW5kbDsKfQo=