blob: dbbf0d89f07ada57dcc34b4222bd437d8c084712 [file] [log] [blame]
// Part of the Crubit project, under the Apache License v2.0 with LLVM
// Exceptions. See /LICENSE for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
// Mock of standard library <type_traits> header.
#ifndef CRUBIT_NULLABILITY_TEST_TYPE_TRAITS_
#define CRUBIT_NULLABILITY_TEST_TYPE_TRAITS_
namespace std {
template<class T> struct remove_pointer { using type = T; };
template<class T> struct remove_pointer<T*> { using type = T; };
template<class T> struct remove_pointer<T* const> { using type = T; };
template<class T> struct remove_pointer<T* volatile> { using type = T; };
template<class T> struct remove_pointer<T* const volatile> { using type = T; };
template<class T> using remove_pointer_t = typename remove_pointer<T>::type;
template <bool, class T = void>
struct enable_if {};
template <class T>
struct enable_if<true, T> {
using type = T;
};
template <class>
inline const bool __is_unbounded_array_v = false;
template <class T>
inline const bool __is_unbounded_array_v<T[]> = true;
} // namespace std
#endif // CRUBIT_NULLABILITY_TEST_TYPE_TRAITS_