2
template<typename Wcf, typename Wdb>
void ComputeGenericDropCount(const function<void(Wdb *, int)> &func)
{
Wcf::ForEach([&](Wcf *wcf) {
Wdb *wdb = Wdb::Find(wcf->sourceId); // <--- ERROR
// error C2653: 'Wdb' : is not a class or namespace name
if(wdb)
func(wdb, wcf->itemCount);
});
}
Wcf
が問題なく "見える"ように見えるので変です。私はwcf->itemCount
を使っています。テンプレートの型は、ラムダ内のコンパイラによって「見えない」
これが起こっている回避策や理由はありますか?
ラムダに渡されたパラメータであるため、wcfを認識します。ではない ?しかし、 'Wdb :: Find'はパブリックな静的関数であるように見えるので、ラムダの本体で使われない理由はありません。 'Wdb :: Find'がクラスWdbのパブリック静的関数であることを確認できますか?テンプレートをインスタンス化することを意味しますか? –
私はあなたがマイクロソフトのVC2010 ++フォーラムでこれを尋ねるべきだと思います、それは潜在的にバグかもしれません。 – ronag