#include <iostream> #include <typeinfo> using namespace std; template<typename A> class X { public: // 類模板中的函數(shù)模板 template<typename B> void foo (void) const { B var; cout << typeid (var).name () << ' ' << typeid (m_var).name () << endl; } // 類模板中的類模板 template<typename B> class Y { public: B m_var; }; A m_var; }; template<typename A, typename B> void bar (void) { X<A> x, *px = &x; x.template foo<B> (); // d i px->template foo<B> (); // d i typename X<A>::template Y<B> y; } int main (void) { X<int> x; x.foo<double> (); // d i X<int>::Y<double> y; bar<int, double> (); return 0; } ?tarena@ubuntu:~/stl/day03$ ./a.out d i d i d i |
|