diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2017-05-10 00:01:13 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2017-05-10 00:01:13 +0000 |
commit | 23f58ce5d2805d7f2fb9818f04cb7541319a5307 (patch) | |
tree | 654a2afb7cd412b8725b30f1a97b3c341d3719db /test/SemaTemplate | |
parent | d9b4d2283a86ba0ed2a768f3d012ba4ee1859eab (diff) |
When instantiating a friend function template, don't forget to inherit default template arguments from other declarations.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@302603 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/SemaTemplate')
-rw-r--r-- | test/SemaTemplate/default-arguments.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/test/SemaTemplate/default-arguments.cpp b/test/SemaTemplate/default-arguments.cpp index d3e249db7e..b5b042c64a 100644 --- a/test/SemaTemplate/default-arguments.cpp +++ b/test/SemaTemplate/default-arguments.cpp @@ -207,3 +207,19 @@ Y<false> y2; } // end ns1 } // end ns PR26134 + +namespace friends { + namespace ns { + template<typename> struct A { + template<typename> friend void f(); + template<typename> friend struct X; + }; + template<typename = int> void f(); // expected-warning 0-1{{extension}} + template<typename = int> struct X; + A<int> a; + } + namespace ns { + void g() { f(); } + X<int> *p; + } +} |