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 Bastien int 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