1// RUN: %clang_cc1 -fsyntax-only -verify %s
2
3// FIXME: [temp.deduct.conv]p2 bullets 1 and 2 can't actually happen without
4// references?
5// struct ConvertibleToArray {
6//   //  template<typename T, unsigned N>
7//   //  operator T(()[]) const;
8
9// private:
10//   typedef int array[17];
11
12//   operator array() const;
13// };
14
15// void test_array(ConvertibleToArray cta) {
16//   int *ip = cta;
17//   ip = cta;
18//   const float *cfp = cta;
19// }
20
21// bullet 2
22// struct ConvertibleToFunction {
23//   template<typename T, typename A1, typename A2>
24//   operator T(A1, A2) const ()  { };
25// };
26
27// bullet 3
28struct ConvertibleToCVQuals {
29  template<typename T>
30  operator T* const() const;
31};
32
33void test_cvqual_conv(ConvertibleToCVQuals ctcv) {
34  int *ip = ctcv;
35  const int *icp = ctcv;
36}
37