Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/g++.dg/cpp1y/lambda-conv2.C @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 // PR c++/71105 | |
2 // { dg-do compile { target c++14 } } | |
3 | |
4 template <typename T> T declval(); | |
5 template <typename, typename> struct is_same | |
6 { static constexpr bool value = false; }; | |
7 template <typename T> struct is_same<T, T> | |
8 { static constexpr bool value = true; }; | |
9 | |
10 template <class F> | |
11 struct indirected : F { | |
12 indirected(F f) : F(f) {} | |
13 template <class I> | |
14 auto operator()(I i) -> decltype(declval<F&>()(*i)) { | |
15 return static_cast<F&>(*this)(*i); | |
16 } | |
17 }; | |
18 | |
19 int main() { | |
20 auto f = [=](auto i) { return i + i; }; | |
21 auto i = indirected<decltype(f)>{f}; | |
22 static_assert(is_same<decltype(i(declval<int*>())), int>::value, ""); | |
23 } |