#include <iostream>
using std::cout;
template <typename T> struct Node
{
// general method split
void split()
{
cout << "Node<T>::split() ";
}
};
template <>
void Node<int>::split()
{
cout << "Node<int>::split() ";
}
int main(int argc, char* argv[])
{
Node <char> x;
x.split(); //will call original method
Node <int> k;
k.split(); //will call the method for the int version
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBzdGQ6OmNvdXQ7Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IE5vZGUKewogICAgLy8gZ2VuZXJhbCBtZXRob2Qgc3BsaXQKICAgIHZvaWQgc3BsaXQoKQogICAgewogICAgICAgY291dCA8PCAiTm9kZTxUPjo6c3BsaXQoKSAiOwogICAgfQp9OwoKdGVtcGxhdGUgPD4Kdm9pZCBOb2RlPGludD46OnNwbGl0KCkKewogICBjb3V0IDw8ICJOb2RlPGludD46OnNwbGl0KCkgIjsKfQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKewogICBOb2RlIDxjaGFyPiB4OwogICB4LnNwbGl0KCk7IC8vd2lsbCBjYWxsIG9yaWdpbmFsIG1ldGhvZAogICBOb2RlIDxpbnQ+IGs7CiAgIGsuc3BsaXQoKTsgLy93aWxsIGNhbGwgdGhlIG1ldGhvZCBmb3IgdGhlIGludCB2ZXJzaW9uCn0K