aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/cpp2a/concepts-pr80471.C
blob: d5fa5a536d3ff5278a910b584d2463fea813e024 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// PR c++/80471
// { dg-do compile { target c++14 } }
// { dg-additional-options "-fconcepts" }

template <class, class>
constexpr bool is_same = false;
template <class T>
constexpr bool is_same<T, T> = true;

template<class T>
decltype(auto) f(T&& a){return a;}

decltype(auto) g(auto&& a){return a;}

auto z = [](auto&& a) -> decltype(auto) { return a; };

int main()
{
  int i;
  static_assert(is_same< decltype(f(i)), int& >, "");
  static_assert(is_same< decltype(g(i)), int  >, "");
  static_assert(is_same< decltype(z(i)), int& >, "");
}