В сегодняшней неправильное статье дается вот такой пример - заменяют макрос по установке бита вот таким образом https://habrahabr.ru/post/347980/ template<typename T, typename T1>
inline void setBit(T &value, T1 bit) {
assert((sizeof(T) * 8U) > bit);
value |= static_cast<T>(static_cast<T>(1) << static_cast<T>(bit));
};