diff options
| author | khodyrev <[email protected]> | 2022-02-10 16:49:29 +0300 |
|---|---|---|
| committer | Daniil Cherednik <[email protected]> | 2022-02-10 16:49:29 +0300 |
| commit | 47c1310af4978d726db4670c6828c59fadb89c1b (patch) | |
| tree | a9642abe74ef10ddf159eec792f844ddfa39f130 /util | |
| parent | b93b3eb857a34bc32cef3c1b0c709e8365253b34 (diff) | |
Restoring authorship annotation for <[email protected]>. Commit 1 of 2.
Diffstat (limited to 'util')
| -rw-r--r-- | util/generic/typetraits.h | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/util/generic/typetraits.h b/util/generic/typetraits.h index d165bd1a068..6b8dcfb12c0 100644 --- a/util/generic/typetraits.h +++ b/util/generic/typetraits.h @@ -8,21 +8,21 @@ #include <type_traits> #include <stlfwd> -#if _LIBCPP_STD_VER >= 17 -template <bool B> -using TBoolConstant = std::bool_constant<B>; -#else +#if _LIBCPP_STD_VER >= 17 template <bool B> +using TBoolConstant = std::bool_constant<B>; +#else +template <bool B> struct TBoolConstant: std::integral_constant<bool, B> {}; -#endif +#endif -#if _LIBCPP_STD_VER >= 17 -template <class B> -using TNegation = std::negation<B>; -#else +#if _LIBCPP_STD_VER >= 17 template <class B> +using TNegation = std::negation<B>; +#else +template <class B> struct TNegation: ::TBoolConstant<!bool(B::value)> {}; -#endif +#endif namespace NPrivate { template <class... Bs> @@ -51,30 +51,30 @@ namespace NPrivate { #if _LIBCPP_STD_VER >= 17 && !defined(_MSC_VER) // Disable std::conjunction for MSVC by analogy with std::disjunction. template <class... Bs> -using TConjunction = std::conjunction<Bs...>; -#else -template <class... Bs> +using TConjunction = std::conjunction<Bs...>; +#else +template <class... Bs> struct TConjunction: ::TBoolConstant<::NPrivate::ConjunctionImpl<Bs...>()> {}; -#endif +#endif #if _LIBCPP_STD_VER >= 17 && !defined(_MSC_VER) // Disable std::disjunction for MSVC. // It reduces build time (500 -> 20 seconds) and memory consumption (20 GB -> less than 1 GB) // for some files (notably search/dssm_boosting/dssm_boosting_calcer.cpp). template <class... Bs> -using TDisjunction = std::disjunction<Bs...>; -#else -template <class... Bs> +using TDisjunction = std::disjunction<Bs...>; +#else +template <class... Bs> struct TDisjunction: ::TBoolConstant<::NPrivate::DisjunctionImpl<Bs...>()> {}; -#endif +#endif -#if _LIBCPP_STD_VER >= 17 -template <class... Bs> -using TVoidT = std::void_t<Bs...>; -#else +#if _LIBCPP_STD_VER >= 17 +template <class... Bs> +using TVoidT = std::void_t<Bs...>; +#else template <class...> using TVoidT = void; -#endif +#endif template <class T> struct TPodTraits { |
