27 lines
589 B
C++
27 lines
589 B
C++
|
// 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();
|
||
|
}
|