Mam szablon klasy z funkcji członka, który ma lambda, który chce użyć parametru typu klasy szablonu. Nie kompiluje się wewnątrz lambda, ale zgodnie z oczekiwaniami osiąga sukces poza lambdą.Dostęp do klasy szablonu typ parametru wewnątrz funkcji składowej z lambda nie
struct wcout_reporter
{
static void report(const std::wstring& output)
{
std::wcout << output << std::endl;
}
};
template <typename reporter = wcout_reporter>
class agency
{
public:
void report_all()
{
reporter::report(L"dummy"); // Compiles.
std::for_each(reports_.begin(), reports_.end(), [this](const std::wstring& r)
{
reporter::report(r); // Fails to compile.
});
}
private:
std::vector<std::wstring> reports_;
};
int wmain(int /*argc*/, wchar_t* /*argv*/[])
{
agency<>().report_all();
return 0;
}
Błąd kompilacji:
error C2653: 'reporter' : is not a class or namespace name
Dlaczego nie mogę wejść do klasy szablonu typ parametru wewnątrz lambda funkcji członka?
Co muszę zrobić, aby uzyskać dostęp do klasy szablonu typu parametru wewnątrz lambda funkcji członka?
Kompiluje dla mnie na GCC 4.6. Jaka jest twoja platforma/kompilator? –
@Kerrek: Visual C++ 2010. –