Все, что является правильным в контексте присвоения переменной типа параметра функции.
Редактировать
Аргументы по умолчанию во время компиляции оцениваются с точки зрения корректности типа и т. Д., Ноони не рассчитываются и никакое присвоение не выполняется до времени выполнения.Вы можете указать конструктор класса, который еще должен быть определен, в качестве аргумента по умолчанию, и это нормально, если класс определен в точке использования функции ... Фактическое вычисление / назначение происходит во время вызова функции, а не в точкеобъявления / определения функции.
Пример:
#include <iostream>
void foo( int a = std::rand())
{
std::cout << a << std::endl;
}
int main( void )
{
foo();
return( 0 );
}
Вывод программы на ideone.com :
1804289383