Рассмотрим следующий код:
int main() {
int (*p)[]; // pointer to array with unspecified bounds
int a[] = {1};
int b[] = {1,2};
p = &a; // works in C but not in C++
p = &b; // works in C but not in C++
return 0;
}
В чистом C вы можете назначить указатель на этот тип адреса массива любого измерения. Но в С++ вы не можете. Я нашел один случай, когда компилятор позволяет присваивать значение такому указателю:
struct C
{
static int v[];
};
int main()
{
int (*p)[] = &C::v; // works in C++ if 'v' isn't defined (only declared)
return 0;
}
Но не удалось найти полезный случай этого кода.
Может ли кто-нибудь дать полезный пример (в С++) указателя на массив с неопределенными границами? Или это только остатки, оставшиеся от C?