template36.c
来自「linux下的gcc编译器」· C语言 代码 · 共 57 行
C
57 行
// Testcase for implicit 'typename' and resolution of 'typename's in the// current scope.class base1 { public: int bar() const { return 1; }};class base2 { public: int bar() const { return 0; }};template<class X>struct base_trait { typedef base1 base;};template<>struct base_trait<float> { typedef base2 base;};template<class T>class weird : public base_trait<T>::base {public: typedef typename base_trait<T>::base base; base f (); int base::* g (); int zowee() const { return bar(); } };template <class T>typename weird<T>::base weird<T>::f (){ return base();}// The standard does not allow this case; the `typename' keyword may// not appear in a ptr-operator.#if 0template <class T>int typename weird<T>::base::* weird<T>::g (){ return 0; }#endifint main(){ weird<float> z; return z.zowee() || z.f().bar();}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?