1

在 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) 和调用 wrapper(args) 给出不同的结果。前者工作正常;后者在 do_work 函数的某处崩溃,我不知道为什么(代码非常复杂)。为什么会这样?如果我在包装器内部的函数调用中省略“arr”参数:

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

然后 wrapper(args) 工作正常!有谁知道发生了什么?我不知道从哪里开始寻找。

4

0 回答 0