Como escrever um modelo std :: bitset que funcione em 32 e 64 bits
Considere o seguinte código
template<unsigned int N> void foo(std::bitset<N> bs)
{ /* whatever */ }
int main()
{
bitset<8> bar;
foo(bar);
return 0;
}
@ g ++ reclama disso em 64 bits porque o <8> é interpretado como um int longo sem sinal, que não corresponde exatamente ao modelo. Se eu alterar o modelo para dizer int longo não assinado, as compilações de 32 bits reclamarã
Obviamente, uma maneira de corrigir isso é mudar o conjunto de bits <8> para o conjunto de bits <8ul>, mas existe alguma maneira de reescrever omodel parte para que funcione com a interpretação padrão de um literal numéric