【发布时间】:2011-09-20 12:02:05
【问题描述】:
在升级到较新的编译器并解决编译器错误时,我意识到boost::fusion::for_each 要求传入的函数对象具有运算符const。
来自Boost的示例:
struct increment
{
template<typename T>
void operator()(T& t) const
{
++t;
}
};
...
vector<int,int> vec(1,2);
for_each(vec, increment());
这当然没有改变。我没有意识到它与std::for_each 不同,后者不需要运算符为const。
struct increment
{
template<typename T>
void operator()(T& t) // no const here!!!
{
++t;
}
};
std::vector<int> numbers;
std::for_each(numbers.begin(), numbers.end(), increment());
要求const 有什么明显的理由吗?我显然无法改变这一点,但我想了解为什么这两者不同。
感谢您的任何见解和解释!
【问题讨论】:
标签: c++ foreach constants boost-fusion