brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 1a999bd Raw
45 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// remove_all_extents12 13#include <type_traits>14 15#include "test_macros.h"16 17enum Enum {zero, one_};18 19template <class T, class U>20void test_remove_all_extents()21{22    ASSERT_SAME_TYPE(U, typename std::remove_all_extents<T>::type);23#if TEST_STD_VER > 1124    ASSERT_SAME_TYPE(U,        std::remove_all_extents_t<T>);25#endif26}27 28int main(int, char**)29{30    test_remove_all_extents<int, int> ();31    test_remove_all_extents<const Enum, const Enum> ();32    test_remove_all_extents<int[], int> ();33    test_remove_all_extents<const int[], const int> ();34    test_remove_all_extents<int[3], int> ();35    test_remove_all_extents<const int[3], const int> ();36    test_remove_all_extents<int[][3], int> ();37    test_remove_all_extents<const int[][3], const int> ();38    test_remove_all_extents<int[2][3], int> ();39    test_remove_all_extents<const int[2][3], const int> ();40    test_remove_all_extents<int[1][2][3], int> ();41    test_remove_all_extents<const int[1][2][3], const int> ();42 43  return 0;44}45