zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

blob 1ecedb66 (1349B) - Raw


      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-exception
      6 //
      7 //===----------------------------------------------------------------------===//
      8 
      9 #ifndef _LIBCPP___TYPE_TRAITS_IS_COMPOUND_H
     10 #define _LIBCPP___TYPE_TRAITS_IS_COMPOUND_H
     11 
     12 #include <__config>
     13 #include <__type_traits/integral_constant.h>
     14 #include <__type_traits/is_fundamental.h>
     15 
     16 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
     17 #  pragma GCC system_header
     18 #endif
     19 
     20 _LIBCPP_BEGIN_NAMESPACE_STD
     21 
     22 #if __has_builtin(__is_compound)
     23 
     24 template <class _Tp>
     25 struct _LIBCPP_NO_SPECIALIZATIONS is_compound : _BoolConstant<__is_compound(_Tp)> {};
     26 
     27 #  if _LIBCPP_STD_VER >= 17
     28 template <class _Tp>
     29 _LIBCPP_NO_SPECIALIZATIONS inline constexpr bool is_compound_v = __is_compound(_Tp);
     30 #  endif
     31 
     32 #else // __has_builtin(__is_compound)
     33 
     34 template <class _Tp>
     35 struct is_compound : public integral_constant<bool, !is_fundamental<_Tp>::value> {};
     36 
     37 #  if _LIBCPP_STD_VER >= 17
     38 template <class _Tp>
     39 inline constexpr bool is_compound_v = is_compound<_Tp>::value;
     40 #  endif
     41 
     42 #endif // __has_builtin(__is_compound)
     43 
     44 _LIBCPP_END_NAMESPACE_STD
     45 
     46 #endif // _LIBCPP___TYPE_TRAITS_IS_COMPOUND_H