template class Holder { T myT; public: Holder() {} Holder(const Holder &other) { myT = other.myT; } }; template Holder operator+(Holder h1, Holder h2) { return Holder(); } void test() { Holder h1; Holder h2 = Holder(); h1 + h2; }