| // RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s |
| // expected-no-diagnostics |
| |
| struct Variant { |
| template <typename T> operator T(); |
| }; |
| |
| Variant getValue(); |
| |
| void testVariant() { |
| bool ret1 = getValue() || getValue(); |
| bool ret2 = getValue() && getValue(); |
| bool ret3 = !getValue(); |
| } |
| |
| struct ExplicitVariant { |
| template <typename T> explicit operator T(); |
| }; |
| |
| ExplicitVariant getExplicitValue(); |
| |
| void testExplicitVariant() { |
| bool ret1 = getExplicitValue() || getExplicitValue(); |
| bool ret2 = getExplicitValue() && getExplicitValue(); |
| bool ret3 = !getExplicitValue(); |
| } |