Os membros flexíveis da matriz são válidos em C ++?
Em C99, você pode declarar um membro flexível da matriz de uma estrutura como:
struct blah
{
int foo[];
};
No entanto, quando alguém aqui no trabalho tentou compilar algum código usando clang em C ++, essa sintaxe não funcionou. (Ele estava trabalhando com o MSVC.) Tivemos que convertê-lo para:
struct blah
{
int foo[0];
};
Examinando o padrão C ++, não encontrei nenhuma referência a matrizes de membros flexíveis; Eu sempre pensei[0]
era uma declaração inválida, mas aparentemente para uma matriz de membros flexível ela é válida. As matrizes de membros flexíveis são realmente válidas em C ++? Se sim, é a declaração correta[]
ou[0]
?