Пётр Короленко: Но заметьте, что большие хедеры = увеличение времени компиляции. Также любое изменение хедра = рекомпиляции всех зависимых файлов = увеличение времени компиляции. . Для больших проектов значимо.
Можете взять IDE с подсветкой парных скобок и пройтись поиском по всем открывающим и смотреть где закрывающаяя не подходит по отступал. Если у вас код и не отформатирован: страдайте.
отлистать символы получится. Хотя бы при помощи ignore. Не получится отлистать определённое количество байт из-за многобайтовых символов (перенос строки на Windows)
vipermagi: Проще сказать, что у них общего: у обоих имеется перегруженный оператор (), позволяющий вызывать их как функции. В остальном это абсолютно разные типы.
bind возвращает уникальный класс для каждого вызова с разными параметрами. Эти классы даже между собой не совместимы. Из плюсов — максимальная производительность. Он эффективен настолько, наскольк эффективен навписанный вручную функциональный объект, или лямбда. Из минусов — передавать можно только в шаблонные функции, так как все типы — уникальны.
std::function — универсальный класс, в кторый можно положить что угодно, вызываемое с данными параметрами. Из плюсов — универсальность. Из минусов — более медленная работа из-за type-erasure и потенциальное выделение динамической памяти.
Вообще, шаблонный конструктор принимающий два итератора — must have для контейнероподобных классов. Очень советую. Особенно учитывая, что он из коробки будет работать с move_iterator.
> Но на архитектуре x86 это UB ведет себя как раз таки определенно
Вы совершаете классическую ошибку, предполагая что знаете во что скомпилируется ваш код. Во-первых компилятор оптимизирует код, предполагая что UB не может наступить в принципе. Если один вариант ведёт к UB, а другой не ведёт, компилятор предполагает, что первый вариант не случится никогда. Отсюда пропавшие проверки, всегда истинные условия и т.д. Во-вторых IEEE-плавучка стандартом не гарантирована. Включаете -ffast-math (полностью придерживающийся стандарта), и попытка запихнуть большой дабл во флоат скорее всего сломает программу.
> преобразования значений базовых типов [...] само по себе [...] не может вызывать[...] неопределенного поведения
Попытка запихнуть DBL_MAX во foat, таки вызывает неопределённое поведение, так как вне диапазона представимых величин для float, а это вызывает UB, согласно 4.8/1
Какой стандарт, какой компилятор? Есть подозрение, что cout здесь не потокобезопасный. Ну и технически здесь UB, поэтому программа имеет право хоть Fuck You вывести.
>паролем
Скажите адресок этого сайта, который хранит пароли, чтобы я мог забанить его на фаерволе, чтобы случайно не востользоваться.