O std::align_val_t
tipo é definido como:
namespace std
{
enum class align_val_t : size_t
{
};
}
Qual é o propósito de uma enumeração tão vazia?
Qual é a diferença com um typedef
?
O std::align_val_t
tipo é definido como:
namespace std
{
enum class align_val_t : size_t
{
};
}
Qual é o propósito de uma enumeração tão vazia?
Qual é a diferença com um typedef
?
Ele é usado como um inteiro fortemente tipado, o que desabilita conversões de tipo implÃcitas.
demonstração godbolt
você pode obter o tipo subjacente com std::to_underlying dentro da função.
Inteiros fortemente tipados são úteis quando você tem uma função que aceita muitos argumentos do mesmo tipo e deseja desambiguá-los para evitar trocar argumentos por engano ou invocar a sobrecarga errada.
Quanto ao motivo de ser usado em
std::align_val_t
, de acordo com Ted Lyngmo nos comentários, é provável que ele elimine a ambiguidade do operador new no caso variádico.