В Qt С++11 очень даже нужен, где собственно его и используем. Но если взять во внимание, что C++ не нужен сам по себе, то ситуация получается не простая.
Да, используем, очень сильно упрощает жизнь при разработке.
Однако надо учитывать разные версии компиляторов и их ограниченную поддержку сабжа. То есть если целевая платформа — RHEL и хочется собирать встроенным в этот RHEL компилятором, то это фейл.
поскольку лучше всё равно ничего нет (в смысле, для плюсов) - нужен. На работе не использую, так как версии компиляторов не позволяют. А для себя я в гробу видал на плюсах писать.
Начал использовать на работе после того, как переползли на более свежий GCC в качестве основного компилятора. Много удобных мелочей, нет повода не использовать.
Нужен. В нём много всяких вкусных вещей, без которых раньше не очень уютно жилось. Хотя, например, в шарпе те же самые штуки реализованы куда кошернее: это и лямбды всякие, и инициализаторы коллекций, и foreach, и многое другое.
rvalue optimisation, move constr, shared_ptr и всё такое - в итоге delete больше не нужен.
Огорчает лишь то, что не всё из стандарта реализовано во всех компиляторах. Например в vs2010 нет std::thread. Так что сыровато и не портабельно.
Да, если надо быстро что то делать. Нет, если нужно продумать работу каждой мелочи чистый С вне конкуренции. А вообще я против усложнения компиляторов в геометрической прогрессии.
Да-да, там вроде ещё даже ленивость есть. Но мой скромный опыт работы с этой библиотекой говорит (как-то от нечего делать тыкал spirit), что её можно использовать лишь для забавы: любая ошибка порождает многостраничный, абсолютно нечитаемый выхлоп компилятора. Единственный способ найти эту ошибку - планомерное комментирование и локализация.
Насчёт читаемости: вот такого аргумента я, мягко говоря, не ожидал.
Да и мой скромный опыт говорит, что лямбдам вовсе не обязательно быть полиморфными (имеется в виду параметрический полиморфизм, да?), поскольку обычно это крайне тупые, единожды используемые функции, prove me wrong.
Лолд. Breaking news: вывод типа возвращаемого значения уже запилили. Когда я в последний раз пытался нечто подобное сделать, gсс говорил мне «sorry, unimplemented».
Насчёт читаемости: вот такого аргумента я, мягко говоря, не ожидал.
Например в связке с Boost.Range:
namespace pa = boost::phoenix::arg_names;
std::vector<boost::optional<Measurement>> ms;
auto sel = ms | filtered(pa::_1) | transformed(*pa::_1);
// или же
auto sel = ms | filtered([] (const boost::optional<Measurement>& x) { return x; })
| transformed([] (const boost::optional<Measurement>& x) { return *x; });
Что касается полиморфности, я имел ввиду шаблоны функций (параметриечского полиморфизма в С++ нет и странно было бы его вводить для лямбд). operator() синтезированного класса должен быть либо шаблоном. либо типы аргументов должны быть явно указаны (как сейчас), т.к. вывод типов крайне ограничен.
Но феникс всё равно ненужен. Прелесть плюсов в их низкоуровневости и тупости, что можно точно знать, как именно твой алгоритм будет выполняться. Чего не скажешь об алгоритмах на фениксе, который сделан через бог знает какие костыли. Для красивых высокоуровневых алгоритмов есть другие языки.
Прелесть плюсов в их низкоуровневости и тупости, что можно точно знать, как именно твой алгоритм будет выполняться.
у вас особенные С++ ?
или вы по выхлопу ассемблерному со всей очевидностью понимаете как точно алго выполняется?
дисциплинированный (бондаж и все дела) С++ код понянет однако всякие неожидано(ибо и по стандарту и по реализациям есть вполне неочивидные кейсы чё и как происходит различные автоматические срабатывания и т.п.)