brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 2ebafb1 Raw
88 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_move_constructible12 13#include <type_traits>14#include "test_macros.h"15 16template <class T>17void test_is_move_constructible()18{19    static_assert( std::is_move_constructible<T>::value, "");20#if TEST_STD_VER > 1421    static_assert( std::is_move_constructible_v<T>, "");22#endif23}24 25template <class T>26void test_is_not_move_constructible()27{28    static_assert(!std::is_move_constructible<T>::value, "");29#if TEST_STD_VER > 1430    static_assert(!std::is_move_constructible_v<T>, "");31#endif32}33 34class Empty35{36};37 38class NotEmpty39{40public:41    virtual ~NotEmpty();42};43 44union Union {};45 46struct bit_zero47{48    int :  0;49};50 51class Abstract52{53public:54    virtual ~Abstract() = 0;55};56 57struct A58{59    A(const A&);60};61 62struct B63{64    B(B&&);65};66 67int main(int, char**)68{69    test_is_not_move_constructible<char[3]>();70    test_is_not_move_constructible<char[]>();71    test_is_not_move_constructible<void>();72    test_is_not_move_constructible<Abstract>();73 74    test_is_move_constructible<A>();75    test_is_move_constructible<int&>();76    test_is_move_constructible<Union>();77    test_is_move_constructible<Empty>();78    test_is_move_constructible<int>();79    test_is_move_constructible<double>();80    test_is_move_constructible<int*>();81    test_is_move_constructible<const int*>();82    test_is_move_constructible<NotEmpty>();83    test_is_move_constructible<bit_zero>();84    test_is_move_constructible<B>();85 86  return 0;87}88