前回(VC++のラムダ式とoperator()でのバグ?)の件に対する回避策(Workaround)です。ずばり、this->を付加すれば大丈夫です。
#include <iostream>
struct Hoge
{
void test()
{
auto f = [&]{this->operator()();};
f();
}
void operator()()
{
std::cout << "hoge" << std::endl;
}
};
int main()
{
Hoge obj;
obj.test();
} |
#include <iostream>struct Hoge
{
void test()
{
auto f = [&]{this->operator()();};
f();
}
void operator()()
{
std::cout << "hoge" << std::endl;
}
};int main()
{
Hoge obj;
obj.test();
}
この記事のカテゴリ
- C++ ⇒ Workaround: VC++のラムダ式とoperator()でのバグ?
- VC++ ⇒ Workaround: VC++のラムダ式とoperator()でのバグ?