У меня есть следующая функция в одном из моих файлов служебных заголовков.
template<typename T>
static void rtrim(std::basic_string<T, std::char_traits<T>, std::allocator<T>> &t)
{
t.erase(find_if(t.rbegin(), t.rend(),
[](T& c)->bool{ return !isspace(c); }).base(), t.end());
}
Я строю код в Visual Studio 2012 с предварительно скомпилированными заголовками (/ Yu). Сборка завершается со следующей ошибкой.
1> stdafx.obj: ошибка LNK2005: «public: void __cdecl
:: оператор () (класс
станд :: basic_string, класс
std :: allocator> const &) const «(?? R @@ QEBAXAEBV? $ basic_string @ _WU? $ char_traits @ _W @ std @@ V? $ allocator @ _W @ 2 @@ std @@@ Z)
уже определено в
Если я удалю /Yu
флаг, он прекрасно строит. Означает ли это, что лямбды нельзя использовать с предварительно скомпилированными заголовками? Есть ли работа вокруг?
Задача ещё не решена.