以下代码会引起未定义的行为吗?
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <experimental/iterator>
int main() {
long double values[] = {1, 2, 3};
std::transform(
std::begin(values), std::end(values),
std::experimental::make_ostream_joiner(std::cout, ", "),
[](long double v) {
return std::put_money(v + 1);
}
);
return 0;
}
我的担忧是return std::put_money(v + 1)
返回的是对临时变量v + 1
的引用。
[](const int& i){...}
可以解决任何潜在的生命周期问题? - 0x5453i + 1
替换掉函数体就没用了。 - Ericint
可以转换为long double
。无论如何,已更新以提高清晰度。@0x5453,已更新以使您的观点无效。 - Eric