Я пытаюсь скомпилировать части библиотеки boost для моего STM32. Я использовал BCP для экспорта static_vector
.
bcp boost/container/static_vector.hpp .
Я могу успешно скомпилировать код и использовать static_vector
согласно этому коду
boost::container::static_vector<int,10> vec;
Но мне нужно отключить этот бит кода, находящийся внутри boost\container\allocator_traits.hpp:467
, прежде чем я смогу успешно скомпилировать.
template<class T>
static void priv_construct_dispatch_next(container_detail::false_type, Allocator &, T *p, const ::boost::container::default_init_t&)
{ ::new((void*)p) T; }
Когда я не отключаю этот битовый код, возникает следующая ошибка:
../Inc/boost/container/allocator_traits.hpp(469): error: #384: no instance of overloaded "operator new" matches the argument list
argument types are: (unsigned int, void *)
{ ::new((void*)p) T; }
Я использую следующие определения:
BOOST_NO_CXX11_RVALUE_REFERENCES BOOST_NO_ALIGNMENT BOOST_NO_TYPEID BOOST_NO_STD_LOCALE
И я использую Keil µVision 5 с «версией компилятора arm по умолчанию 5». Библиотека буста - версия 1.58.
Мне кажется, что определение new
отсутствует в этой версии Keil. Но я не могу определить, что делает этот бит кода, не говоря уже о том, чтобы определить мою собственную версию, которая заполняет этот пробел.
Так, что делает этот бит кода и я могу реализовать свое собственное исправление?