Это BAD IDEA ™.
Как правило, вы не можете и не должны полагаться на детали реализации компилятора / библиотеки 1 . Вдобавок к этому, как указано Fire Lancer в комментариях, "наличие включений имеет разные эффекты в зависимости от порядка, приведет в замешательство людей" и добавит в строку wtf / вашей библиотеки.
Что вы могли бы (должны?) Сделать, это документировать макрос, который пользователь должен определить, чтобы включить ваши std::string
функции:
#ifdef MY_LIBRARY_ENABLE_STRING_FUNCTIONS
void print(std::string message);
#endif // MY_LIBRARY_ENABLE_STRING_FUNCTIONS
Если пользователь хочет их, они ' Вам потребуется:
#define MY_LIBRARY_ENABLE_STRING_FUNCTIONS
#include <my_library>
1) C ++ 17 содержит макрос __has_include(<filename>)
(кредит acraig5075 для изучения этого мне), который не помогает, поскольку он возвращает, доступно ли включение, и нет, если оно было включено.