В настоящее время я портирую приложение C ++ в слегка ограниченную среду.Приложение использует классы STL, string и stream.Я переписываю их упрощенные версии, которые будут хорошо играть в моей среде.
Меня беспокоит то, что мое приложение компилируется даже без всех необходимых определений операторов.Например, для моих строковых классов я определил:
string operator+ (const string& lhs, const string& rhs);
, и этого было достаточно.Тем не менее, я заметил, что часто были случаи, в которых mystring + «некоторая постоянная строка» нигде не определена.Когда я явно добавил его, оно использовалось:
string operator+ (const string& lhs, const char* rhs);
Что происходило до этого?Он успешно скомпилирован, прежде чем я добавил вторую функцию.Конечно, компилятор не сможет определить, как объединить строки в стиле c с моим классом строк.
Сейчас в моей программе странное поведение, и мне интересно, не связано ли это с другими оставленными операторамине определено.Есть ли способ заставить компилятор требовать такие определения операторов, если он нужен программе?
PS Мой класс строк находится в уникальном пространстве имен и не связан с std ::