Для решения задачи у тебя есть два множества: множество "A" и множество "B". И есть интерфейс с функцией "virtual B Intf::Foo(A) = 0";
В базе кода уже присутствует полсотни имплементаций этого интерфейса и больше тысячи мест использования имплементаций по интерфейсу.
Твоя задача - создать еще одну имплементацию "Intf::Foo", для работы которой потребуется сперва как-то изменить как множество "A", так и множество "B".
Вопрос: какие ограничения уже имеющийся код накладывает на твои возможности по изменению множеств "A" и "B"?
А можно узнать почему?
1. Effective C++
2. Effective Modern C++
3. Effective STL
4. More Effective C++
5. Exceptional C++
6. More Exceptional C++
7. Exceptional C++ Style
8. C++ Coding Standards
9. Modern C++ Design
это не ответ на мою просьбу. Если упоминаете какие то референсы то и скидывайте конкретные примеры
но в этом и проблема что все книги упомянутых мною авторов датируются 2001-2004 годами
auto
только усложняет чтение кода, сбивает читателя с его мысли и заставляет задаваться совсем ненужными вопросами. Поэтому лучше указывать явные типы переменных. А обобщение использовать стоит только тогда, когда указание явного типа только затрудняет понимание кода при чтении.auto
в типе результата буквально незачем. Объявление этого шаблона должно быть таким:template <typename TResult>
TResult search (std::string str);
а вообще корректно сравнивать между собой два вещественных числа?
Но если он основан на динамическом массиве, то как тогда выполняется вставка элементов?
так и чему он не равен?
в пропозале C++ написно, что он отложен до C++29.
Мне в целом фиолетово, что написано в стандарте, мой код компилирует компилятор, а не стандарт.
ОК. На этом мои полномочия -- всё.
А ещё у вас UB, когда вызываете placement new на невыровненный массив байтов
Вы можете использовать только так:
То есть размер должен быть известен на момент компиляции.