次の例を考えてみます。ここCONSTのstd ::関数は(非const演算子をラップ)/可変ラムダ
#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
はoperator()
const
非を呼び出すことができます。
出力:
12
同じことが起こるIが供給場合mutable
ラムダ例えばtest([x = 0]() mutable { ++x; });
どのようにすることができますか?
通常、const std::function
は可変ファンクタをラップできますか?