| // RUN: %clang_cc1 -std=c++11 -fsyntax-only %s -verify |
| |
| namespace ExplicitConv { |
| struct X { }; // expected-note 2{{candidate constructor}} |
| |
| struct Y { |
| explicit operator X() const; |
| }; |
| |
| void test(const Y& y) { |
| X x(static_cast<X>(y)); |
| X x2((X)y); |
| X x3 = y; // expected-error{{no viable conversion from 'const ExplicitConv::Y' to 'ExplicitConv::X'}} |
| } |
| } |
| |
| namespace DR899 { |
| struct C { }; // expected-note 2 {{candidate constructor}} |
| |
| struct A { |
| explicit operator int() const; |
| explicit operator C() const; |
| }; |
| |
| struct B { |
| int i; |
| B(const A& a): i(a) { } |
| }; |
| |
| int main() { |
| A a; |
| int i = a; // expected-error{{no viable conversion}} |
| int j(a); |
| C c = a; // expected-error{{no viable conversion}} |
| C c2(a); |
| } |
| } |