【发布时间】:2017-11-04 19:50:05
【问题描述】:
考虑以下示例:
#include <iostream>
#include <functional>
struct A
{
int i;
void operator()()
{
std::cout << ++i;
}
};
void test(std::function<void()> const& fun)
{
fun();
}
int main() {
const std::function<void()> f{A{}};
test(f);
test(f);
}
这里,const std::function 可以调用非const operator()。
输出:
12
如果我提供 mutable lambda,也会发生同样的情况,例如test([x = 0]() mutable { ++x; });
怎么可能?
const std::function 可能包装可变函子是否正常?
【问题讨论】:
标签: c++ c++11 std-function