Pull to refresh
-11
0
Руссков Андрей @Antervis

Разработчик

Send message
> Мне вот интересно в какой версии C++ конструктор string'а станет наконец-то constexpr…
Если вы знаете, как сделать constexpr-конструктор для класса, владеющего памятью на куче, срочно оформляйте proposal! Это же столько дряни в компайл-тайм перетечет!
если при муве происходит копирование, значит вы что-то делаете не так
Класс будет неявно создавать перемещающий конструктор/оператор присвоения только в случае, если у класса не переопределены копирующий конструктор/оператор присвоения или деструктор. А их как правило переопределяют для нетривиальных классов.
> но что бы это понять и убедиться что это работает, нужно столько сил и времени
Просто: потому что copy elision 1. и так реализован в основных компиляторах 2. является требованием с++17.

> В итоге имеем такие затыки через каждые 20 строчек
Вот когда замерите, увидите что у вас программа 30+% времени перегоняет пустое в порожнее, туда-обратно копирует и жрет оперативку как хром, тогда у вас будет замечательный инструментарий в виде lvalue reference/rvalue/copy elision для оптимизации копирования и использования памяти. А заниматься микрооптимизациями, да еще и без четкого понимания как это всё работает — вредить себе и проекту.
так можно же писать using std::placeholders;
я доказывал только реализуемость
Почему же трудно то?
template std::enable_if_t<std::is_same<std::random_access_iterator_tag, typename T::iterator_category>::value,void>
doSomething(T begin, T end) { /*...*/ }
Вот вам и ограничение «здесь принимается random access iterator».

Шаблонность в общем случае тоже необязательно — можно пользоваться auto функциями/лямбдами
есть функция std::distance, который как раз выдаст длину контейнера, определяемого итераторами begin и end. Точно так же у большинства контейнеров определен конструктор, принимающий итераторы и возвращающий, по факту, подмассив указанного размера: std::wstring ws = L«sometext»; std::string s(ws.begin()+4, ws.end()); вернет «text»
проблема в том, что некоторые неблагородные API (и майкрософт грешит этим чаще остальных) часто просят, например, wchar_t* вместо const wchar_t* даже когда не меняют строку.
А в каком контексте текущие лямбды не полиморфны?
Шел 2196-й год… С++ праздновал свой двухсотый день рождения новым стандартом, а его всё хоронили и хоронили…
Чтобы так «пальнуться» надо написать что-то типа inline int a = ...; в двух .cpp вне классов/методов/неймспейсов. Нечаянно взломать сейф, так сказать
когда Qt говорит «it could not find or load the Qt platform plugin» это обычно означает, что приложение не может найти нужную библиотеку в папке platforms проекта. Либо для этой библиотеки не разрешены зависимости
было бы странно если бы создатели языка им не пользовались
— Свободно общаюсь, смотрю кино и новости
— Нет, явно недостаточно, и меня это беспокоит
вот только IQ физически не может распределяться по Гауссу
из совмещения рисования и программирования едва ли когда-то выходило что-то стоящее
наверное, не совсем «ортогональны», если «дополняют друг друга»? 90% задач можно сделать и на том, и на другом. А остальные 10% тоже, только если пришивать ухо вместо хвоста ослику Иа
Вы не поняли суть процитированного вами же высказывания. Код на ФП не является более корректным только потому, что он функциональный. И точно так же он (в общем случае, не рассматривая конкретные задачи) не является по умолчанию более простым или безопасным.

При этом пара утверждений однозначно верны:
1. Реальные объекты имеют состояния и эти состояния могут меняться с течением времени.
2. Реальные данные имеют свойство меняться с течением времени.
Т.о. получается, что все задачи динамики (завязанные на времени) являются по своей природе императивными. Т.е. класс «чисто функциональных» задач очень скуден.

Из чего мы приходим к выводу, что имеет смысл внедрять элементы ФП в мультипарадигменные языки для упрощения анализа статики, но при этом чисто функциональные яп не применимы к большинству реальных задач.
берем за правило создавать новый экземпляр на каждое изменение

например, создавать копию гигабайтного массива на каждое изменение элемента по отдельному индексу?

Information

Rating
Does not participate
Location
Томск, Томская обл., Россия
Date of birth
Registered
Activity