From 1804caeedfa12ede64783fe40f8b3570b1868a92 Mon Sep 17 00:00:00 2001 From: Yedidya Feldblum Date: Fri, 21 Jul 2017 00:20:14 -0700 Subject: [PATCH] Style tweaks to max_align_v calculation Summary: [Folly] Style tweaks to `max_align_v` calculation. * Change ns from `folly::detail` since that can be crowded and many other folly libraries may include this header. * Extract a 2-param `max` alias. * Fix an incorrectly hardcoded `size_t`. Reviewed By: WillerZ Differential Revision: D5468758 fbshipit-source-id: 14a3f67323020a3cfce2b3b46f5f64f3e6125027 --- folly/Portability.h | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/folly/Portability.h b/folly/Portability.h index d0c14dd7..0ac56951 100644 --- a/folly/Portability.h +++ b/folly/Portability.h @@ -33,21 +33,20 @@ constexpr bool kHasUnalignedAccess = true; constexpr bool kHasUnalignedAccess = false; #endif -namespace detail { +namespace portability_detail { + +template +using integral_max = std::integral_constant; template -struct integral_max - : std::integral_constant< - I, - (A > integral_max::value) ? A - : integral_max::value> { -}; +struct integral_sequence_max + : integral_max::value> {}; -template -struct integral_max : std::integral_constant {}; +template +struct integral_sequence_max : std::integral_constant {}; template -using max_alignment = integral_max; +using max_alignment = integral_sequence_max; using max_basic_alignment = max_alignment< std::max_align_t, @@ -66,7 +65,7 @@ using max_basic_alignment = max_alignment< std::nullptr_t>; } // namespace detail -constexpr size_t max_align_v = detail::max_basic_alignment::value; +constexpr size_t max_align_v = portability_detail::max_basic_alignment::value; // max_align_t is a type which is aligned at least as strictly as the // most-aligned basic type (see the specification of std::max_align_t). This -- 2.34.1