aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/cpp1z/class-deduction114.C
blob: daf30f8d158ef59fc41caff9fd4822224fd70903 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// PR c++/106214
// { dg-do compile { target c++17 } }
// A version of cpp0x/initlist-deduce3.C using list CTAD instead
// of ordinary auto deduction from an initializer list.

using size_t = decltype(sizeof 0);

namespace std {
  template<typename T> struct initializer_list {
    const T *ptr;
    size_t n;
    initializer_list(const T*, size_t);
  };
}

template<typename T>
void Task() {}

template<class T>
struct vector {
  vector(std::initializer_list<T>);
};

vector a = &Task<int>; // { dg-error "deduction|no match" }
vector b = { &Task<int> };
vector e{ &Task<int> };
vector f = { &Task<int>, &Task<int> };
vector d = { static_cast<void(*)()>(&Task<int>) };