xref: /llvm-project/clang/test/SemaCXX/cxx0x-initializer-references.cpp (revision 29526f09cee8b558f12fe544c5a5ce30e5e79e36)
1 // RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
2 
3 namespace reference {
4   struct A {
5     int i1, i2;
6   };
7 
8   void single_init() {
9     const int &cri1a = {1};
10     const int &cri1b{1};
11 
12     int i = 1;
13     int &ri1a = {i};
14     int &ri1b{i};
15 
16     int &ri2 = {1}; // expected-error {{cannot bind to an initializer list temporary}}
17 
18     A a{1, 2};
19     A &ra1a = {a};
20     A &ra1b{a};
21   }
22 
23   void reference_to_aggregate() {
24     const A &ra1{1, 2};
25     A &ra2{1, 2}; // expected-error {{cannot bind to an initializer list temporary}}
26 
27     const int (&arrayRef)[] = {1, 2, 3};
28     static_assert(sizeof(arrayRef) == 3 * sizeof(int), "bad array size");
29   }
30 
31 }
32