1 // RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s 2 // expected-no-diagnostics 3 4 struct Variant { 5 template <typename T> operator T(); 6 }; 7 8 Variant getValue(); 9 10 void testVariant() { 11 bool ret1 = getValue() || getValue(); 12 bool ret2 = getValue() && getValue(); 13 bool ret3 = !getValue(); 14 } 15 16 struct ExplicitVariant { 17 template <typename T> explicit operator T(); 18 }; 19 20 ExplicitVariant getExplicitValue(); 21 22 void testExplicitVariant() { 23 bool ret1 = getExplicitValue() || getExplicitValue(); 24 bool ret2 = getExplicitValue() && getExplicitValue(); 25 bool ret3 = !getExplicitValue(); 26 } 27