-#if defined(__GNUC__) // GCC, Clang, ICC
-
- static inline IndexType lsb_(std::uint32_t b) {
- assert(b);
- return IndexType(__builtin_ctzl(b));
- }
-
-#elif defined(_MSC_VER) // MSVC
-
- static inline IndexType lsb_(std::uint32_t b) {
- assert(b);
- unsigned long idx;
- _BitScanForward(&idx, b);
- return (IndexType) idx;
- }
-
-#else // Compiler is neither GCC nor MSVC compatible
-
-#error "Compiler not supported."
-
-#endif
-