RM
uint32_t test = (1 « 2);
BIT::HAS(test, 0, 1);
Проверяет test на наличие битов (1 « 0) и (1 « 1)
Size: a a a
RM
RM
O
O
template <typename T1, typename... T2>
constexpr bool HAS(T1& var, T2&... B)
{
constexpr auto set_func = [](auto data...) -> constexpr auto
{
return (static_cast<T1>(1) << data);
};
constexpr auto sizeargs{ sizeof...(B) };
constexpr T1 data = set_func(B...);
return (var & data) == data;
}
RM
O
template <typename T1, typename... T2>
constexpr bool HAS(T1& var, T2&... B)
{
constexpr auto set_func = [](auto data...) -> constexpr auto
{
return (static_cast<T1>(1) << data);
};
constexpr auto sizeargs{ sizeof...(B) };
constexpr T1 data = set_func(B...);
return (var & data) == data;
}
auto data...(static_cast<T1>(1) << data);W
RM
auto data...(static_cast<T1>(1) << data);РГ
РГ
O
RM
namespace BIT {
template <typename T1, typename T2> void ADD (T1 &var, T2 B) {var |= (static_cast<T1>(1) << B);}
template <typename T1, typename T2> void SET (T1 &var, T2 B) {var = (static_cast<T1>(1) << B);}
template <typename T1, typename T2> bool GET (T1 &var, T2 B) {return var & (static_cast<T1>(1) << B);}
template <typename T1, typename T2> constexpr void REM (T1 &var, T2 B) {var &= ~(static_cast<T1>(1) << B);}
template <typename T1, typename T2> constexpr void INVERT (T1 &var, T2 B) {var ^= (static_cast<T1>(1) << B);}
}RM
RM
RM
O
namespace BIT {
template <typename T1, typename T2> void ADD (T1 &var, T2 B) {var |= (static_cast<T1>(1) << B);}
template <typename T1, typename T2> void SET (T1 &var, T2 B) {var = (static_cast<T1>(1) << B);}
template <typename T1, typename T2> bool GET (T1 &var, T2 B) {return var & (static_cast<T1>(1) << B);}
template <typename T1, typename T2> constexpr void REM (T1 &var, T2 B) {var &= ~(static_cast<T1>(1) << B);}
template <typename T1, typename T2> constexpr void INVERT (T1 &var, T2 B) {var ^= (static_cast<T1>(1) << B);}
}RM
uint32_t test = (1 « 0) | (1 « 1);
uint32_t mask = (1 « 0) | (1 « 1);
if((test & mask) == mask){
// true
}
RM
O
template <typename T1, typename... T2>
constexpr bool HAS(T1& var, T2&... B)
{
constexpr auto set_func = [](auto data...) -> constexpr auto
{
return (static_cast<T1>(1) << data);
};
constexpr auto sizeargs{ sizeof...(B) };
constexpr T1 data = set_func(B...);
return (var & data) == data;
}
set_funcRM