1762bb9d0ad20320b9f97a841dce57ba5e8e48b07Richard Smith// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
2d61db33331c264d6361283602b248a7423040597Douglas Gregor
3d61db33331c264d6361283602b248a7423040597Douglas Gregorstruct A {
4d61db33331c264d6361283602b248a7423040597Douglas Gregorprivate:
5d61db33331c264d6361283602b248a7423040597Douglas Gregor  int : 0;
6d61db33331c264d6361283602b248a7423040597Douglas Gregor};
7d61db33331c264d6361283602b248a7423040597Douglas Gregor
8d61db33331c264d6361283602b248a7423040597Douglas GregorA a = { };
9d61db33331c264d6361283602b248a7423040597Douglas GregorA a2 = { 1 }; // expected-error{{excess elements in struct initializer}}
10d61db33331c264d6361283602b248a7423040597Douglas Gregor
11d61db33331c264d6361283602b248a7423040597Douglas Gregorstruct B {
12d61db33331c264d6361283602b248a7423040597Douglas Gregor  const int : 0;
13d61db33331c264d6361283602b248a7423040597Douglas Gregor};
14d61db33331c264d6361283602b248a7423040597Douglas Gregor
15d61db33331c264d6361283602b248a7423040597Douglas GregorB b;
16d61db33331c264d6361283602b248a7423040597Douglas Gregor
17d61db33331c264d6361283602b248a7423040597Douglas Gregorvoid testB() {
18d61db33331c264d6361283602b248a7423040597Douglas Gregor  B b2(b);
19d61db33331c264d6361283602b248a7423040597Douglas Gregor  B b3(static_cast<B&&>(b2));
20d61db33331c264d6361283602b248a7423040597Douglas Gregor  b = b;
21d61db33331c264d6361283602b248a7423040597Douglas Gregor  b = static_cast<B&&>(b);
22d61db33331c264d6361283602b248a7423040597Douglas Gregor}
23