p3.cpp revision 762bb9d0ad20320b9f97a841dce57ba5e8e48b07
1762bb9d0ad20320b9f97a841dce57ba5e8e48b07Richard Smith// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
2f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl
3f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redlstruct B1 {
4f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl  B1(int);
5f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl  B1(int, int);
6f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl};
7f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redlstruct D1 : B1 {
8f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl  using B1::B1;
9f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl};
10f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian RedlD1 d1a(1), d1b(1, 1);
11f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl
12f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian RedlD1 fd1() { return 1; }
13f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl
14f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redlstruct B2 {
15f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl  explicit B2(int, int = 0, int = 0);
16f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl};
1785ea7aa961deac1d754f610af8062ae3f8b4e2a5Sebastian Redlstruct D2 : B2 { // expected-note 2 {{candidate constructor}}
18f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl  using B2::B2;
19f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl};
20f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian RedlD2 d2a(1), d2b(1, 1), d2c(1, 1, 1);
21f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl
22f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian RedlD2 fd2() { return 1; } // expected-error {{no viable conversion}}
23f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl
24f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redlstruct B3 {
25f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl  B3(void*); // expected-note {{inherited from here}}
26f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl};
2785ea7aa961deac1d754f610af8062ae3f8b4e2a5Sebastian Redlstruct D3 : B3 { // expected-note 2 {{candidate constructor}}
28f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl  using B3::B3; // expected-note {{candidate constructor (inherited)}}
29f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl};
30f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian RedlD3 fd3() { return 1; } // expected-error {{no viable conversion}}
31