180e66ac1SEric Fiselier //===----------------------------------------------------------------------===// 280e66ac1SEric Fiselier // 357b08b09SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 457b08b09SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 557b08b09SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 680e66ac1SEric Fiselier // 780e66ac1SEric Fiselier //===----------------------------------------------------------------------===// 880e66ac1SEric Fiselier 9*31cbe0f2SLouis Dionne // UNSUPPORTED: c++03, c++11, c++14 1080e66ac1SEric Fiselier 1180e66ac1SEric Fiselier // <variant> 1280e66ac1SEric Fiselier 1380e66ac1SEric Fiselier // struct monostate {}; 1480e66ac1SEric Fiselier 1580e66ac1SEric Fiselier #include <type_traits> 1680e66ac1SEric Fiselier #include <variant> 1780e66ac1SEric Fiselier 187fc6a556SMarshall Clow #include "test_macros.h" 197fc6a556SMarshall Clow main(int,char **)202df59c50SJF Bastienint main(int, char**) { 2180e66ac1SEric Fiselier using M = std::monostate; 2280e66ac1SEric Fiselier static_assert(std::is_trivially_default_constructible<M>::value, ""); 2380e66ac1SEric Fiselier static_assert(std::is_trivially_copy_constructible<M>::value, ""); 2480e66ac1SEric Fiselier static_assert(std::is_trivially_copy_assignable<M>::value, ""); 2580e66ac1SEric Fiselier static_assert(std::is_trivially_destructible<M>::value, ""); 2680e66ac1SEric Fiselier constexpr M m{}; 2780e66ac1SEric Fiselier ((void)m); 282df59c50SJF Bastien 292df59c50SJF Bastien return 0; 3080e66ac1SEric Fiselier } 31