Visual Studio 2012 — ошибка LNK2005, когда c ++ лямбды использовались с флагом / Yu в vs2012

У меня есть следующая функция в одном из моих файлов служебных заголовков.

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 флаг, он прекрасно строит. Означает ли это, что лямбды нельзя использовать с предварительно скомпилированными заголовками? Есть ли работа вокруг?

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]