Цитата(UnrealMan @ 13.9.2007, 22:52 ) | | Можно воспользоваться перегрузкой |
Хотя я бы поступил примерно так:
| Код | #include <iostream> #include <ostream>
template <class T, class S> class A { public: A(int n) : n(n) {} void f() const; private: int n; template <class T_, class S_> friend class AHelper; };
template <class T, class S> struct AHelper { static void f(const A<T, S> &a) { std::cout << "A<T, S>::f(); n = " << a.n << std::endl; } };
template <class T> struct AHelper<T, T> { static void f(const A<T, T> &a) { std::cout << "A<T, T>::f(); n = " << a.n << std::endl; } };
template <class T, class S> void A<T, S>::f() const { AHelper<T, S>::f(*this); }
int main() { A<int, char>(1).f(); A<int, int>(2).f(); }
|
|