#include <iostream>
using namespace std;
struct C1 {
template <typename T>
void g(T t);
void g(double x) {
cout << "C1::g(double): " << x << endl;
}
};
template<>
void C1::g(double x) {
cout << "Member templates. C1::g(double) " << x << endl;
}
int main() {
C1 c;
c.g(10.5); // output: C1::g(double): 10.5
c.g<>(10.5); // output: Member templates. C1::g(double) 10.5
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IEMxIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgIHZvaWQgZyhUIHQpOwoKICAgIHZvaWQgZyhkb3VibGUgeCkgewogICAgICAgIGNvdXQgPDwgIkMxOjpnKGRvdWJsZSk6ICIgPDwgeCA8PCBlbmRsOwogICAgfQp9OwoKdGVtcGxhdGU8Pgp2b2lkIEMxOjpnKGRvdWJsZSB4KSB7CiAgICBjb3V0IDw8ICJNZW1iZXIgdGVtcGxhdGVzLiBDMTo6Zyhkb3VibGUpICIgPDwgeCA8PCBlbmRsOwp9CgppbnQgbWFpbigpIHsKICAgIEMxIGM7CiAgICBjLmcoMTAuNSk7IC8vIG91dHB1dDogQzE6OmcoZG91YmxlKTogMTAuNQogICAgYy5nPD4oMTAuNSk7IC8vIG91dHB1dDogTWVtYmVyIHRlbXBsYXRlcy4gQzE6OmcoZG91YmxlKSAxMC41CglyZXR1cm4gMDsKfQ==