145
|
1 // PR c++/80471
|
|
2 // { dg-do compile { target c++14 } }
|
|
3 // { dg-additional-options "-fconcepts" }
|
|
4
|
|
5 template <class, class>
|
|
6 constexpr bool is_same = false;
|
|
7 template <class T>
|
|
8 constexpr bool is_same<T, T> = true;
|
|
9
|
|
10 template<class T>
|
|
11 decltype(auto) f(T&& a){return a;}
|
|
12
|
|
13 decltype(auto) g(auto&& a){return a;}
|
|
14
|
|
15 auto z = [](auto&& a) -> decltype(auto) { return a; };
|
|
16
|
|
17 int main()
|
|
18 {
|
|
19 int i;
|
|
20 static_assert(is_same< decltype(f(i)), int& >, "");
|
|
21 static_assert(is_same< decltype(g(i)), int& >, "");
|
|
22 static_assert(is_same< decltype(z(i)), int& >, "");
|
|
23 }
|