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