с++: массив в качестве параметра по умолчанию

подскажите пожалуйста, а то голова что-то не варит уже, как реализовать следующую вещь:

есть функция, которая в качестве параметра принимает указатель:

void func(int* data)

можно ли в качестве параметра по умолчанию указать статический массив с заданным кол-вом элементов, что-то типа такого

void func(int* data = (int*)int[1024])

а было бы еще лучше, если бы по умолчанию указывался заполненный нулями массив

конечно это можно сделать через std::vector и ссылку или через собственный класс, но можно ли как-то сделать через простые типы?


Ответы (2 шт):

Автор решения: Rivand

Если вам принципиально значение по умолчанию в интерфейсе, то используйте std::array.

void func(int* data = std::array<int, 1024>().data())

Но нормальным решением будет ставить значение по умолчанию nullptr и уже в самом теле функции создавать массив, если data == nullptr.

→ Ссылка
Автор решения: AlexGlebe

Всё очень просто.

void func(int* data){
 ..}

void func(void){
   int data[1024]={};
   func(data); }

Аргументы по-умолчанию это плохой стиль. Проще так.

→ Ссылка