Моя цель - использовать последние функции C++, такие как интеллектуальные указатели (по крайней мере, std::shared_ptr
) для библиотеки linux C++, которая должна работать в нескольких дистрибутивах (очевидно, перекомпилируя ее для каждой платформы). Самый старый gcc, на который я ориентируюсь, — 4.4.x, так как мне нужно поддерживать RHEL6. Кажется, умные указатели поддерживаются для простой программы, например
#include <iostream>
#include <memory>
int main()
{
std::shared_ptr<int> aa;
return 0;
}
Моя библиотека будет предоставлять C API (extern
), я не использую исключения и типы C++ в API. Я статически связываю libstdc++ и libgcc и помечаю все символы как локальные, кроме экспортируемых API.
У меня теперь другой вопрос: в ситуации выше будет ли библиотека, скомпилированная с более новым gcc (например, 5.0 или даже 6.0), работать в более старой системе, такой как RHEL6 с установленным по умолчанию gcc 4.4.x надежно?
Теоретически, использование более поздних функций С++, но не раскрытие каких-либо из них в символах или API, должно работать, но я не очень уверен, и я бы предпочел спросить.