我有一個帶有成員函數的類模板,它具有要使用類模板參數類型的lambda。它不能在lambda內進行編譯,而是在lambda之外按預期成功完成。在lambda成員函數內部訪問類模板參數類型失敗
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;
}
的編譯錯誤:
error C2653: 'reporter' : is not a class or namespace name
爲什麼我不能訪問成員函數拉姆達內部類模板參數類型?
我需要做什麼才能訪問成員函數lambda中的類模板參數類型?
編譯我在GCC 4.6。什麼是您的平臺/編譯器? –
@Kerrek:Visual C++ 2010. –