Допустимы ли гибкие элементы массива в C ++?

В C99 вы можете объявить гибкий элемент массива структуры как таковой:

struct blah
{
    int foo[];
};

Однако, когда кто-то здесь на работе пытался скомпилировать какой-то код с помощью clang в C ++, этот синтаксис не работал. (Он работал с MSVC.) Нам пришлось преобразовать его в:

struct blah
{
    int foo[0];
};

Просматривая стандарт C ++, я не нашел вообще никаких ссылок на гибкие массивы элементов; Я всегда думал, что [0] было недопустимым объявлением, но, очевидно, для гибкого массива элементов оно действительно. Действительно ли гибкие массивы элементов действительны в C ++? Если да, то правильное ли объявление [] или [0]?

36
задан MSN 10 December 2010 в 19:55
поделиться