Я пишу код С++ 11, который делает предположения о природе std::string
действительными, но представляет собой поведение, которое было изменено на С++ 11. В более ранние дни реализация libstdС++ basic_string
соответствовала требованиям 98/03, но не к более строгим требованиям С++ 11.
Как я понимаю, libstdС++ исправил проблемы вокруг basic_string
. Проблема в том, что существует множество версий библиотеки, которые используют пользователи, которые не реализуют это исправление. И мой код может бесшумно терпеть неудачу на них.
Я хотел бы иметь огонь static_assert
, если пользователь пытается скомпилировать мою библиотеку с этими несоответствующими версиями libstdС++. Как определить версию и, что не менее важно, какую версию я должен искать?