p7.cpp revision c5a89a1cc2f168ad0a115c560b8de5f1c952d8c5
1762bb9d0ad20320b9f97a841dce57ba5e8e48b07Richard Smith// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s 2f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl 3f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl// Straight from the standard 4f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redlstruct B1 { 5c5a89a1cc2f168ad0a115c560b8de5f1c952d8c5Richard Smith B1(int); // expected-note {{previous constructor}} expected-note {{conflicting constructor}} 6f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl}; 7f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redlstruct B2 { 8f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl B2(int); // expected-note {{conflicting constructor}} 9f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl}; 10f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redlstruct D1 : B1, B2 { 11f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl using B1::B1; // expected-note {{inherited here}} 12f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl using B2::B2; // expected-error {{already inherited constructor with the same signature}} 13f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl}; 14f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redlstruct D2 : B1, B2 { 15f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl using B1::B1; 16f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl using B2::B2; 17f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl D2(int); 18f677ea3cc9598d9952ad7ffab5fb322ba4c5be31Sebastian Redl}; 19c5a89a1cc2f168ad0a115c560b8de5f1c952d8c5Richard Smith 20c5a89a1cc2f168ad0a115c560b8de5f1c952d8c5Richard Smithtemplate<typename T> struct B3 { 21c5a89a1cc2f168ad0a115c560b8de5f1c952d8c5Richard Smith B3(T); // expected-note {{previous constructor}} 22c5a89a1cc2f168ad0a115c560b8de5f1c952d8c5Richard Smith}; 23c5a89a1cc2f168ad0a115c560b8de5f1c952d8c5Richard Smithtemplate<typename T> struct B4 : B3<T>, B1 { 24c5a89a1cc2f168ad0a115c560b8de5f1c952d8c5Richard Smith B4(); 25c5a89a1cc2f168ad0a115c560b8de5f1c952d8c5Richard Smith using B3<T>::B3; // expected-note {{inherited here}} 26c5a89a1cc2f168ad0a115c560b8de5f1c952d8c5Richard Smith using B1::B1; // expected-error {{already inherited}} 27c5a89a1cc2f168ad0a115c560b8de5f1c952d8c5Richard Smith}; 28c5a89a1cc2f168ad0a115c560b8de5f1c952d8c5Richard SmithB4<char> b4c; 29c5a89a1cc2f168ad0a115c560b8de5f1c952d8c5Richard SmithB4<int> b4i; // expected-note {{here}} 30