Kaynağa Gözat

stl: std::popcount

skypjack 2 ay önce
ebeveyn
işleme
793d4a9738
3 değiştirilmiş dosya ile 4 ekleme ve 3 silme
  1. 1 1
      src/entt/entity/entity.hpp
  2. 2 2
      src/entt/meta/node.hpp
  3. 1 0
      src/entt/stl/bit.hpp

+ 1 - 1
src/entt/entity/entity.hpp

@@ -74,7 +74,7 @@ concept entity_like = requires {
  */
 template<typename Traits>
 class basic_entt_traits {
-    static constexpr auto length = std::popcount(Traits::entity_mask);
+    static constexpr auto length = stl::popcount(Traits::entity_mask);
 
     static_assert(Traits::entity_mask && ((Traits::entity_mask & (Traits::entity_mask + 1)) == 0), "Invalid entity mask");
     static_assert((Traits::version_mask & (Traits::version_mask + 1)) == 0, "Invalid version mask");

+ 2 - 2
src/entt/meta/node.hpp

@@ -47,14 +47,14 @@ enum class meta_traits : stl::uint32_t {
 template<typename Type>
 requires stl::is_enum_v<Type>
 [[nodiscard]] auto meta_to_user_traits(const meta_traits traits) noexcept {
-    constexpr auto shift = std::popcount(static_cast<stl::underlying_type_t<meta_traits>>(meta_traits::_user_defined_traits));
+    constexpr auto shift = stl::popcount(static_cast<stl::underlying_type_t<meta_traits>>(meta_traits::_user_defined_traits));
     return Type{static_cast<stl::underlying_type_t<Type>>(static_cast<stl::underlying_type_t<meta_traits>>(traits) >> shift)};
 }
 
 template<typename Type>
 requires stl::is_enum_v<Type>
 [[nodiscard]] auto user_to_meta_traits(const Type value) noexcept {
-    constexpr auto shift = std::popcount(static_cast<stl::underlying_type_t<meta_traits>>(meta_traits::_user_defined_traits));
+    constexpr auto shift = stl::popcount(static_cast<stl::underlying_type_t<meta_traits>>(meta_traits::_user_defined_traits));
     const auto traits = static_cast<stl::underlying_type_t<internal::meta_traits>>(static_cast<stl::underlying_type_t<Type>>(value));
     ENTT_ASSERT(traits < ((~static_cast<stl::underlying_type_t<meta_traits>>(meta_traits::_user_defined_traits)) >> shift), "Invalid traits");
     return meta_traits{traits << shift};

+ 1 - 0
src/entt/stl/bit.hpp

@@ -8,6 +8,7 @@ namespace entt::stl {
 
 using std::bit_ceil;
 using std::has_single_bit;
+using std::popcount;
 
 } // namespace entt::stl
 /*! @endcond */