1*a13822b3SNikolas Klauser //===----------------------------------------------------------------------===// 2*a13822b3SNikolas Klauser // 3*a13822b3SNikolas Klauser // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*a13822b3SNikolas Klauser // See https://llvm.org/LICENSE.txt for license information. 5*a13822b3SNikolas Klauser // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*a13822b3SNikolas Klauser // 7*a13822b3SNikolas Klauser //===----------------------------------------------------------------------===// 8*a13822b3SNikolas Klauser 9*a13822b3SNikolas Klauser #ifndef TEST_META_UNARY_COMP_COMMON_H 10*a13822b3SNikolas Klauser #define TEST_META_UNARY_COMP_COMMON_H 11*a13822b3SNikolas Klauser 12*a13822b3SNikolas Klauser #include "test_macros.h" 13*a13822b3SNikolas Klauser 14*a13822b3SNikolas Klauser #if TEST_STD_VER >= 11 15*a13822b3SNikolas Klauser struct TrivialNotNoexcept { 16*a13822b3SNikolas Klauser TrivialNotNoexcept() noexcept(false) = default; 17*a13822b3SNikolas Klauser TrivialNotNoexcept(const TrivialNotNoexcept&) noexcept(false) = default; 18*a13822b3SNikolas Klauser TrivialNotNoexcept(TrivialNotNoexcept&&) noexcept(false) = default; 19*a13822b3SNikolas Klauser TrivialNotNoexcept& operator=(const TrivialNotNoexcept&) noexcept(false) = default; 20*a13822b3SNikolas Klauser TrivialNotNoexcept& operator=(TrivialNotNoexcept&&) noexcept(false) = default; 21*a13822b3SNikolas Klauser }; 22*a13822b3SNikolas Klauser #endif 23*a13822b3SNikolas Klauser 24*a13822b3SNikolas Klauser class Empty {}; 25*a13822b3SNikolas Klauser 26*a13822b3SNikolas Klauser struct NotEmpty { 27*a13822b3SNikolas Klauser virtual ~NotEmpty(); 28*a13822b3SNikolas Klauser }; 29*a13822b3SNikolas Klauser 30*a13822b3SNikolas Klauser union Union {}; 31*a13822b3SNikolas Klauser 32*a13822b3SNikolas Klauser struct bit_zero { 33*a13822b3SNikolas Klauser int : 0; 34*a13822b3SNikolas Klauser }; 35*a13822b3SNikolas Klauser 36*a13822b3SNikolas Klauser struct A { 37*a13822b3SNikolas Klauser A(); 38*a13822b3SNikolas Klauser A(const A&); 39*a13822b3SNikolas Klauser A& operator=(const A&); 40*a13822b3SNikolas Klauser }; 41*a13822b3SNikolas Klauser 42*a13822b3SNikolas Klauser class Abstract 43*a13822b3SNikolas Klauser { 44*a13822b3SNikolas Klauser virtual ~Abstract() = 0; 45*a13822b3SNikolas Klauser }; 46*a13822b3SNikolas Klauser 47*a13822b3SNikolas Klauser #endif // TEST_META_UNARY_COMP_COMMON_H 48