// 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(); }