blob: 5d1e6fb85ce9c40506b4858c63cf84b267c09774 [file] [log] [blame]
Daniel Dunbara5728872009-12-15 20:14:24 +00001// RUN: %clang_cc1 -verify %s
Daniel Dunbarcb8845f2009-06-13 06:16:36 +00002
3class A {
4public:
5 explicit A();
6
Douglas Gregorb3df1382011-10-12 19:26:40 +00007 explicit operator int(); // expected-warning {{explicit conversion functions are a C++11 extension}}
Daniel Dunbarcb8845f2009-06-13 06:16:36 +00008
Anders Carlsson0757c8c2010-01-24 16:49:46 +00009 explicit void f0(); // expected-error {{'explicit' can only be applied to a constructor or conversion function}}
10
11 operator bool();
Daniel Dunbarcb8845f2009-06-13 06:16:36 +000012};
13
Anders Carlsson0757c8c2010-01-24 16:49:46 +000014explicit A::A() { } // expected-error {{'explicit' can only be specified inside the class definition}}
Douglas Gregorb3df1382011-10-12 19:26:40 +000015explicit A::operator bool() { return false; } // expected-warning {{explicit conversion functions are a C++11 extension}}\
Anders Carlsson0757c8c2010-01-24 16:49:46 +000016 // expected-error {{'explicit' can only be specified inside the class definition}}
Stephen Hines6bcf27b2014-05-29 04:14:42 -070017
18class B {
19 friend explicit A::A(); // expected-error {{'explicit' is invalid in friend declarations}}
20};