dr166.c
来自「Mac OS X 10.4.9 for x86 Source Code gcc」· C语言 代码 · 共 61 行
C
61 行
// { dg-do compile }// Origin: Giovanni Bajo <giovannibajo at gcc dot gnu dot org>// DR166: Friend declarations of template-ids namespace N { template <class T> void f(T); void g(); namespace M { class A { friend void f<int>(int); // N::f static int x; // { dg-error "private" } }; class B { template <class T> friend void f(T); // M::f static int x; // { dg-error "private" } }; class C { friend void g(); // M::g static int x; // { dg-error "private" } }; template <class T> void f(T) // will be instantiated as f<long> { M::A::x = 0; // { dg-error "within this context" } M::B::x = 0; } template <> void f<int>(int) { M::A::x = 0; } // { dg-error "within this context" } template <> void f<double>(double ) { M::B::x = 0; M::f<long>(0); // { dg-error "instantiated" } } void g(void) { M::C::x = 0; } } template <class T> void f(T) // will be instantiated as f<long> { M::A::x = 0; // { dg-error "within this context" } M::B::x = 0; // { dg-error "within this context" } } template <> void f<int>(int ) { N::f<long>(0); // { dg-error "instantiated" } M::A::x = 0; M::B::x = 0; // { dg-error "within this context" } } template <> void f<char>(char ) { M::A::x = 0; } // { dg-error "within this context" } void g(void) { M::C::x = 0; } // { dg-error "within this context" }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?