Для решения задачи у тебя есть два множества: множество "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 на невыровненный массив байтов
Почему тебе сейчас пишут в комментариях, а не в ответах. Это потому что нормально ответить на твой текст очень тяжело. Я и другие люди так просто экономим свое время.
Подели свое обучение на три этапа. Первый этап - это программный параллелизм, системы планирования, системы разделения времени, системы пакетной обработки, системы реального времени. Второй этап - это архитектура вычислительных систем, SIMD, MISD, MIMD, топологии вычислительных систем и прочее (книга В. Г. Хорошевского). Третий этап - это аппаратный параллелизм современных процессорных архитектур, MESI, многоуровневый кэш и режимы параллельной обработки данных.
Так у тебя должна будет выстроиться единая линия понимания параллелизма.