Я пытаюсь использовать EASTL для проекта, над которым я работаю, он не будет компилироваться, и единственная ошибка, которую я смог найти, это его EASTL / initializer_list.h, я работаю с новейшей версией этот файл. 2 ошибки, которые пришли, были C2953 и еще одна ошибка, которая подсказывала мне посмотреть его определение. EASTL автоматически отключает все предупреждения, которые пришли вместе с включением этого файла, и даже имеет свое собственное определение для использования в своих файлах. Единственная проблема заключается в том, что он включает windows версию файла, и она все еще вызывает ошибку, даже если она должна быть в порядке? Я работаю на C ++ 14, мой набор инструментов платформы v142 (Visual Studio 2019), а моя Windows SDK версия 10.0; Я знаю, что говорит обновить «EA_HAVE_CPP11_INITIALIZER_LIST define from», что я уже сделал, так что это не должно быть проблемой.
Вот код, вызывающий ошибку:
#if defined(EA_HAVE_CPP11_INITIALIZER_LIST) // If the compiler can generate calls to std::initializer_list...
// The initializer_list type must be declared in the std namespace, as that's the
// namespace the compiler uses when generating code to use it.
EA_DISABLE_ALL_VC_WARNINGS()
#include <initializer_list>
EA_RESTORE_ALL_VC_WARNINGS()
#else
// If you get an error here about initializer_list being already defined, then the EA_HAVE_CPP11_INITIALIZER_LIST define from <EABase/eahave.h> needs to be updated.
namespace std
{
// See the C++11 Standard, section 18.9.
template<class E>
class initializer_list
{
public:
typedef E value_type;
typedef const E& reference;
typedef const E& const_reference;
typedef size_t size_type;
typedef const E* iterator; // Must be const, as initializer_list (and its mpArray) is an immutable temp object.
typedef const E* const_iterator;
private:
iterator mpArray;
size_type mArraySize;
// This constructor is private, but the C++ compiler has the ability to call it, as per the C++11 Standard.
initializer_list(const_iterator pArray, size_type arraySize)
: mpArray(pArray), mArraySize(arraySize) { }
public:
initializer_list() EA_NOEXCEPT // EA_NOEXCEPT requires a recent version of EABase.
: mpArray(NULL), mArraySize(0) { }
size_type size() const EA_NOEXCEPT { return mArraySize; }
const_iterator begin() const EA_NOEXCEPT { return mpArray; } // Must be const_iterator, as initializer_list (and its mpArray) is an immutable temp object.
const_iterator end() const EA_NOEXCEPT { return mpArray + mArraySize; }
};
}
#endif
Я попытался заставить его использовать как стандартную версию класса, так и версию класса EA, обе из которых вызывают одну и ту же ошибку (C2953). Любая помощь приветствуется, так как я хочу иметь возможность скомпилировать ее раньше, чем позже!