#pragma once #include #include namespace sls { template std::vector getSetBits(T val) { constexpr size_t bitsPerByte = 8; constexpr size_t numBits = sizeof(T) * bitsPerByte; std::bitset bs(val); std::vector set_bits; set_bits.reserve(bs.count()); for (size_t i = 0; i < bs.size(); ++i) { if (bs[i]) { set_bits.push_back(static_cast(i)); } } return set_bits; } } // namespace sls