Я нашел ответ на свой вопрос, и для полноты картины я опубликую его здесь.
Чтобы убедиться, что мой проект Eclipse CDT скомпилирован с libc ++, мне нужно было включите следующий флаг
-stdlib=libc++
в одну из этих настроек
a) Проект -> Свойства -> Сборка C / C ++ -> Настройки -> Настройки инструмента -> LLVM Clang ++ -> Команда (вставить после clang++
)
b) Проект -> Свойства -> Сборка C / C ++ -> Настройки -> Настройки инструмента -> LLVM Clang ++ - > Разное -> Другие флаги
Мне также пришлось включить библиотеку c++
для компоновщика в
Project -> Properties -> Сборка C / C ++ -> Настройки -> Настройки инструмента -> LLVM Clang ++ linker -> Библиотеки -> Библиотеки (-l)
Существует удобный способ проверить, с кем связан stdlib, используя следующие code:
#include <iostream>
#include <string_view>
template<typename T>
constexpr auto print() {
std::string_view name = __PRETTY_FUNCTION__;
name.remove_prefix(name.find('=')+2);
name.remove_suffix(1);
return name;
}
int main() {
std::cout << print<std::string>() << std::endl;
}
Будет выведено одно из следующих значений в зависимости от того, установлен флаг -stdlib
или c ++ библиотеки установлены:
// libc++
std::__1::basic_string<char>
// libstdc++
std::__cxx11::basic_string<char>