LINUX.ORG.RU

Планы на C++17

 


0

2

Thoughts about C++17 by Bjarne Stroustrup. Список обсуждаемых фич большой, его часть:

So here is my top-ten list for C++17 (no order within the list):

  • Concepts (they allows us to precisely specify our generic programs and address the most vocal complaints about the quality of error messages)
  • Modules (provided they can demonstrate significant isolation from macros and a significant improvement in compile times)
  • Ranges and other key STL components using concepts (to improve error messages for mainstream users and improved the precision of the library specification “STL2”)
  • Uniform call syntax (to simplify the specification and use of template libraries)
  • Co-routines (should be very fast and simple)
  • Networking support (based on the asio in the TS)
  • Contracts (not necessarily used in the C++17 library specification)
  • SIMD vector and parallel algorithms
  • Co-routines
  • Library “vocabulary types”, such as optional, variant, string_view, and array_view

Еще предлагаются паттерн-матчинг, транзакционная память и operator.().

Надеются успеть к 17, и уже планируют корректирующий C++20.

★★★★

Последнее исправление: unsigned (всего исправлений: 1)

Ни слова про GC, кстати. И еще где-то было интересное предложение по рефлексии, тоже не видно.

unsigned ★★★★
() автор топика
Ответ на: комментарий от tailgunner

паттерн-матчинг

Его уже даже в C# готовят. <troll>А поскольку плюсы только и делают что тырят фичи из ML и C#...</troll>

unsigned ★★★★
() автор топика
Ответ на: комментарий от unsigned

Ты раскрыл тайный план Страуструпа:) Теперь придётся свернуть проект C#.

pon4ik ★★★★★
()

Похоже, что кресты стремятся занять место PL/1.

msgascii
()
Ответ на: комментарий от Chaser_Andrey

GC просто уже есть, притом максимально тупой из коробки, но легко расширяемый...

Просто ссылки надо явно обьявлять, но так же оно и в C++/CLI, например.

pon4ik ★★★★★
()

Как сильно хочет корутины-то. И ни слова про ABI.

buddhist ★★★★★
()

GC не нужен, от него уже даже в Objective-C отказались. Есть другие способы достижения счастья.

А вот это:

Modules (provided they can demonstrate significant isolation from macros and a significant improvement in compile times)

я бы всё же сделал приоритетом, причем без всяких «provided». ИМХО это одна из тех мелочей, которая реально мешает распространению языка.

asaw ★★★★★
()

Откатить все новомодное УГ вплоть до 11-х креств включительно и накатить

Co-routines

Будет идеальный язык.

kawaii_neko ★★★★
()
Ответ на: комментарий от kawaii_neko

Откатить все новомодное УГ вплоть до 11-х креств включительно

Слишком толсто.

DarkEld3r ★★★★★
()

Concepts

Нужно, компайл-тайм дак-тайпинг это несерьезно.

Modules

Очень нужно, но не совсем понятно, как с макросами дело будет.

Ranges and other key STL components using concepts

Умеренно нужно, рейнджы явно удобнее итераторов.

Uniform call syntax

Наверно нужно, но есть у меня подозрения, что это незаметно поломает кучу легаси-кода.

Co-routines (should be very fast and simple)

Если stackless то наверно кому-то нужно.

Networking support (based on the asio in the TS)

Имхо не нужно в стандартной библиотеке, они бы еще GUI туда добавили.

Contracts (not necessarily used in the C++17 library specification)

Не нужно совсем, контракты не взлетели, лучше бы юниттестинг как-нибудь встроили.

SIMD vector and parallel algorithms

Наверно нужно, но лучше бы tbb в стандарт включили.

Library “vocabulary types”, such as optional, variant, string_view, and array_view

Явно нужно, с ними веселее.

В общем и целом: очень нужно, ждем с нетерпением.

anonymous
()

Модули? Ну слава богу.

Solace ★★
()
Ответ на: комментарий от Stil

Да, похоже. Интересная же штука; возможно, заменила бы препроцессор Qt. Но в списке отсутствует.

unsigned ★★★★
() автор топика
Ответ на: комментарий от unsigned

GC

он не нужен в C++, для этого есть java

WRG ★★★★
()

in soviet programming boost steals features from c++.

anonymous
()
Ответ на: комментарий от anonymous

Сколько там уже лет прошло с последнего стандарта общелишпа?

общелисп почти идеален и легко расширяем. инфа 146%

Oxdeadbeef ★★★
()
Ответ на: комментарий от unsigned

Ни слова про GC, кстати. И еще где-то было интересное предложение по рефлексии, тоже не видно.

Зачем GC должен быть непременно стандартизован? Кому нужен GC, тот может реализовать его сам, использовать чужой вариант (если он ему подойдет) или продолжить писать на Java/C#.

m0rph ★★★★★
()

Co-routines (should be very fast and simple)

Интересно, на основе чего они будут реализованы.

И если stackless, это как?

Twissel ★★★★★
()
Ответ на: комментарий от Twissel

И если stackless, это как?

анончик тупит. если stackless, то он ещё с ansi c имеется — setjmp/longjmp

anonymous
()
Ответ на: комментарий от ReanGD

Знаю.

Просто вижу, что идет постепенное движение языка на фичи скриптовых языков, буст и STL-библиотеки, как ядра Си++

Twissel ★★★★★
()
Ответ на: комментарий от m0rph

А как ты предлагаешь реализовать «самому» отслеживающий gc? И какие есть чужие варианты? Boehm - это несерьезно.

Что-то можно попытаться сделать, будь в языке та самая рефлексия. Или на уровне компилятора, но тогда прощай кроссплатформенность.

unsigned ★★★★
() автор топика
Ответ на: комментарий от m0rph

Вообще речь о том, что про добавление GC высказывался сам Комитет, или кто-то из него.

unsigned ★★★★
() автор топика
Ответ на: комментарий от Chaser_Andrey

Объясните, зачем на практике нужны Concepts

Concepts (they allows us to precisely specify our generic programs and address the most vocal complaints about the quality of error messages)

tailgunner ★★★★★
()

А compile-time рефлексия будет? В gcc вроде даже можно какой-то опцией врубить.

Gorthauer ★★★★★
()
Ответ на: комментарий от Chaser_Andrey

Concepts (they allows us to precisely specify our generic programs and address the most vocal complaints about the quality of error messages)

Это вода, а хочется конкретики.

Хм. Интересно, что для тебя было бы достаточно конкретным ответом на вопрос «зачем нужны концепты»?

tailgunner ★★★★★
()
Ответ на: комментарий от unt1tled

Генераторы делать Для некоторых алгоритмов очкнь удобно

backburner
()
Ответ на: комментарий от unsigned

А как ты предлагаешь реализовать «самому» отслеживающий gc?

Для него нужен свой рантайм, да и реализация получится очень нетривиальной. Если в C++ добавлять высокоуровневые сущности в итоге может получится еще один раздутый C#, отягощенный скопившимся тяжелым наследием крестов. Зачем делать это из C++ непонятно. Хочешь рефлексию, GC, LINQ и прочие ништяки - используй соответствующий язык. Требуется высокая производительность, умеренное потребление памяти и ты умеешь управлять памятью вручную - используй C++. Можешь еще поэкспериментировать с D, там есть GC. Только все почему-то ждут, когда кто-то другой начнет писать на D серьезный проект и тем самым докажет его юзабельность.

m0rph ★★★★★
()
Ответ на: комментарий от Chaser_Andrey

Концепты - это compile-time интерфейсы шаблонных параметров. Сейчас они прописываются только в документации, а будут в языке. Если интерфейс не соблюдается, то вместо простыни ошибок как сейчас ты получишь ясное сообщение типа «bar is not Allocator».

Корутины позволяют, например, лапшу из асинхронных коллбеков превратить в псевдосинхронный код. Примеры есть в boost.

unsigned ★★★★
() автор топика
Ответ на: комментарий от unsigned

GC нужен только рациональный, а это в каком-то виде возможно уже сейчас, а лучше будет не сделать (из-за указателей и детерминированного времени и порядка вызова деструкторов). Рефлексия нужна только времени компиляции.

anonymous
()
Ответ на: комментарий от m0rph

Я думаю что можно обойтись без тяжелого рантайма. В соответствии с «механизм, а не политика» сам сборщик мог бы быть самописным классом, а язык просто будет предоставлять необходимую информацию - например, список отслеживаемых ссылок на стеке и т. п. Это повлечет некоторые расходы и будет опционально включаемой фичей. Примерно как с RTTI.

Я когда-то пытался сделать mark-n-sweep для плюсов. Ссылки на стеке более-менее отслеживаются умными указателями, но проблема в том как из объекта вытащить ссылки на другие объекты.

Зачем это нужно? Не знаю, просто because we can. Вернее, could :)

unsigned ★★★★
() автор топика
Ответ на: комментарий от anonymous

Если stackless то наверно кому-то нужно.

stackless сопрограммы делаются довольно легко сейчас. Нужны как раз stackfull.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.