Передача по умолчанию valarray не работает

В C ++ у меня есть две функции:

do_work(args, std::valarray<double> arr=std::valarray<double>(0.0, 1)) {
very_complicated_things
}

wrapper(args, std::valarray<double> arr=std::valarray<double>(0.0, 1)) {
do_work(args, arr);
}

Вызов do_work (args) и вызов оболочки (args) дают разные результаты. Бывший работает отлично; последний падает где-то в функции do_work, и я понятия не имею, почему (код довольно сложный). Почему это так? Если я опущу аргумент «arr» в вызове функции внутри оболочки:

wrapper(args, std::valarray<double> arr=std::valarray<double>(0.0, 1)) {
do_work(args);
}

тогда обертка (args) работает нормально! У кого-нибудь есть идея, что происходит? Я не знаю, с чего начать.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]