#include <iostream>
template< typename T >
class A
{};
class B
{
public:
template< typename... T >
void operator()( A<T>... a )
{
std::cout << "A<T>\n";
}
template< typename callable >
void operator()( callable f )
{
std::cout << "callable\n";
}
};
int main()
{
B b;
A<int> a;
b( a );
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgpjbGFzcyBBCnt9OwoKY2xhc3MgQgp7CiAgcHVibGljOgogICAgdGVtcGxhdGU8IHR5cGVuYW1lLi4uIFQgPgogICAgdm9pZCBvcGVyYXRvcigpKCBBPFQ+Li4uIGEgKQogICAgewogICAgICBzdGQ6OmNvdXQgPDwgIkE8VD5cbiI7CiAgICB9CgogICAgdGVtcGxhdGU8IHR5cGVuYW1lIGNhbGxhYmxlID4KICAgIHZvaWQgb3BlcmF0b3IoKSggY2FsbGFibGUgZiApCiAgICB7CiAgICAgIHN0ZDo6Y291dCA8PCAiY2FsbGFibGVcbiI7CiAgICB9Cn07CgoKaW50IG1haW4oKQp7CiAgQiAgICAgIGI7CiAgQTxpbnQ+IGE7CgogIGIoIGEgKTsKfQ==