Предположим, у меня есть функция, которая принимает аргумент r-значения, и я хочу предоставить значение по умолчанию, как мне правильно указать это? Следующее прекрасно работает с gcc 4.7.0, но не работает
с icpc 13.0.1.
struct data {
int _data[10];
data() = default;
data(data&&) = default;
data(const data&) = default;
};
void func(data&& = data{});
ICPC жалуется, что
error: type name is not allowed
void func(data&& = data{});
^
Это правильно? Какой правильный синтаксис?
Похоже, что icpc 13.0.1 не поддерживает синтаксис универсальной инициализации в аргументах по умолчанию. Это работает:
void func(data&& = data());
^^ value-initialization
Других решений пока нет …