Я ищу элегантный С++, использующий SystemC для объединения битов.
Пример System Verilog в одной красивой строке:
bool my_variable;
uint bits_combination = {8'b0, {8{my_variable}}, 8'b1, 4'b0, 2'b1, 2'b0};
Мое лучшее решение для С++:
bool my_variable;
sc_uint<32> bits_combination;
bits_combination.range(31,24) = 0;
bits_combination.range(23,16) = my_variable ? (1 << 8)-1 : 0;
bits_combination.range(15,8) = (1 << 8)-1;
bits_combination.range(7,4) = 0;
bits_combination.range(3,2) = (1 << 2)-1;
bits_combination.range(1,0) = 0;
Улучшение этой строки до нетернарного оператора также поможет:
my_variable ? (1 << 8)-1 : 0