У меня есть C ++ - проект, который сам по себе не использует никаких «современных» функций C ++ (вы, вероятно, все еще можете скомпилировать его с помощью MSVC6).
Однако он использует несколько (необязательных) библиотек один из которых требует по крайней мере C ++ 11.
Только недавно я обнаружил, что при построении проекта на macOS с clang ++ - 9.0.0 не будет использоваться библиотека (которая была обнаружена на этапе настройки таким образом, в конечном итоге сборка прошла успешно, просто без этой библиотеки ...), просто потому, что компилятор по умолчанию установил C ++ 98 . (wtf ??)
Простое решение проблемы - просто передать -std=c++11
.
Однако передача -std=c++11
компилятору приведет к стандарту C ++ 11, даже если стандарт по умолчанию был чем-то более высоким (например, C ++ 14), что в конечном итоге приводит к понижению путей кода до устаревших / compat-версий.
Кроме того, у меня может быть другая необязательная зависимость, для которой требуется a более новый стандарт.
Поскольку я хотел бы поддерживать максимальную совместимость (со старыми компиляторами) и одновременно поддерживать все мои необязательные зависимости, я задаюсь вопросом:
* Можно ли запросить минимальная стандартная версия от компилятора, возможно, форсирующая обновление стандарта, но никогда не понижает ?
что-то вроде -min-std=c++11
или -std>=c++11
...