1 // RUN: %clang_cc1 -triple x86_64-linux -std=c++14 %s -emit-llvm -o - | FileCheck %s
2 // RUN: %clang_cc1 -triple x86_64-linux -std=c++17 %s -emit-llvm -o - | FileCheck %s
3 
4 namespace std {
5   template<typename T> class initializer_list {
6     const T *data;
7     __SIZE_TYPE__ size;
8 
9   public:
10     initializer_list();
11   };
12 }
13 
14 namespace ParenBraceInitList {
15   struct Vector {
16     Vector(std::initializer_list<int>);
17     ~Vector();
18   };
19 
BaseParenBraceInitList::Base20   struct Base { Base(Vector) {} };
21 
22   // CHECK: define {{.*}}18ParenBraceInitList1fILi0EE
f()23   template<int> void f() {
24     // CHECK: call {{.*}}18ParenBraceInitList6VectorC1
25     // CHECK: call {{.*}}18ParenBraceInitList6VectorD1
26     Base({0});
27   }
28   template void f<0>();
29 }
30