brintos

brintos / llvm-project-archived public Read only

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