diff --git a/clang/test/SemaCXX/linkage2.cpp b/clang/test/SemaCXX/linkage2.cpp index 072dcd2413d0..0adc7edca84b 100644 --- a/clang/test/SemaCXX/linkage2.cpp +++ b/clang/test/SemaCXX/linkage2.cpp @@ -48,3 +48,26 @@ namespace test5 { void g(); } } + +// pr14898 +namespace test6 { + template + class __attribute__ ((__visibility__("default"))) shared_future; + template + class future { + template friend class shared_future; + shared_future<_Rp> share(); + }; + template future<_Rp> + get_future(); + template + struct shared_future<_Rp&> { + shared_future(future<_Rp&>&& __f); // expected-warning {{rvalue references are a C++11 extension}} + }; + void f() { + typedef int T; + get_future(); + typedef int& U; + shared_future f1 = get_future(); + } +}