brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · e09091a Raw
67 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// type_traits10 11// is_trivial12 13// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS14 15#include <type_traits>16#include "test_macros.h"17 18template <class T>19void test_is_trivial()20{21    static_assert( std::is_trivial<T>::value, "");22    static_assert( std::is_trivial<const T>::value, "");23    static_assert( std::is_trivial<volatile T>::value, "");24    static_assert( std::is_trivial<const volatile T>::value, "");25#if TEST_STD_VER > 1426    static_assert( std::is_trivial_v<T>, "");27    static_assert( std::is_trivial_v<const T>, "");28    static_assert( std::is_trivial_v<volatile T>, "");29    static_assert( std::is_trivial_v<const volatile T>, "");30#endif31}32 33template <class T>34void test_is_not_trivial()35{36    static_assert(!std::is_trivial<T>::value, "");37    static_assert(!std::is_trivial<const T>::value, "");38    static_assert(!std::is_trivial<volatile T>::value, "");39    static_assert(!std::is_trivial<const volatile T>::value, "");40#if TEST_STD_VER > 1441    static_assert(!std::is_trivial_v<T>, "");42    static_assert(!std::is_trivial_v<const T>, "");43    static_assert(!std::is_trivial_v<volatile T>, "");44    static_assert(!std::is_trivial_v<const volatile T>, "");45#endif46}47 48struct A {};49 50class B51{52public:53    B();54};55 56int main(int, char**)57{58    test_is_trivial<int> ();59    test_is_trivial<A> ();60 61    test_is_not_trivial<int&> ();62    test_is_not_trivial<volatile int&> ();63    test_is_not_trivial<B> ();64 65  return 0;66}67