【发布时间】:2011-04-19 07:10:41
【问题描述】:
假设我有这些代码行;
std::vector<int> ints;
std::for_each(ints.begin(), ints.end(), [](int& val){ val = 7; });
但是,我不想在我的 lambda 函数中指定参数类型,即我想写这样的东西;
std::for_each(ints.begin(), ints.end(), [](auto& val){ val = 7; });
有没有办法做到这一点?
(boost::lambda 不需要指定类型...)
更新:
现在我使用宏:#define _A(container) decltype(*std::begin(container)),所以我可以这样做:
std::for_each(ints.begin(), ints.end(), [](_A(ints)& val){ val = 7; });
【问题讨论】:
-
至少为此,为什么不只是
std::fill(ints.begin(), ints.end(), 7);? -
是的,在这种情况下可以使用 std::fill,但是,这不是我的问题。
-
这就是为什么我输入它作为评论,而不是答案......