Какая ваша любимая функция C++0x?[закрыто]

StackOverflow https://stackoverflow.com/questions/137812

  •  02-07-2019
  •  | 
  •  

Вопрос

Как многие из нас знают (а многие, многие еще не знают), C++ в настоящее время находится на стадии окончательной разработки следующей редакции международного стандарта, которая, как ожидается, будет опубликована примерно через 2 года.Черновики и документы в настоящее время доступны на сайте сайт комитета.Добавляются всевозможные новые функции, самые крупные из которых — концепции и лямбды.Существует очень всеобъемлющий Статья в Википедии со многими новыми функциями.GCC 4.3 и более поздние версии реализуют некоторые возможности C++0x.

Что касается новых функций, мне очень нравятся черты типов (и соответствующие концепции), но мой однозначный лидер — вариативные шаблоны.До версии 0x длинные списки шаблонов обычно включали препроцессор Boost, и их очень неприятно писать.Это значительно упрощает задачу и позволяет рассматривать шаблоны C++0x как совершенно функциональный язык с использованием шаблонов с переменным числом вариантов.Я уже написал с их помощью очень крутой код и не могу дождаться, чтобы использовать их чаще!

Итак, какие функции вы ожидаете больше всего?

Это было полезно?

Решение

авто ключевое слово для вывода типа переменной

Другие советы

Лямбды и списки инициализаторов.

Кроме того, изменения, упрощающие в конечном итоге внедрение C++ в модель сбора мусора, кажутся довольно интересными.Возможно, C++1x действительно внесёт сборку мусора, но 0x/10 просто подготовил всё на этот случай.

Мне нужны ссылки на Rvalues.

Все остальные новые функции — это то, без чего мы могли бы легко обойтись (увы, функции).Однако из-за отсутствия Rvalue в C++ сотням авторов библиотек шаблонов пришлось «взламывать» проблему с неработающей ссылкой Rvalue.

Вариадные шаблоны!(Что в сочетании со ссылками на значение r дает нам идеальную пересылку!)

Потоки и атомы.

Теперь, когда появились многоядерные процессоры, нормой C++0x должен был стать C++07.

Г.

Строго типизированные перечисления получить мой голос.В Паскале они существуют всего около 40 лет, поэтому приятно видеть, что C++ наконец-то догоняет их.

Однако публикация стандарта на самом деле не является событием.Гораздо важнее то, что функции, которые вы хотите использовать, действительно полностью и надежно поддерживаются реальными инструментальными цепочками. Есть люди, которым действительно нравится писать соответствующий стандартам код, который не компилируется ни одним известным компилятором. Удачи им.

  1. Это должно быть включение некоторых библиотек Boost (shared_ptr<> и привязка вверху списка)

  2. Контроль над созданием шаблонов должен, наконец, решить проблему огромного времени компиляции и сделать возможным использование современного кода шаблонов в крупных проектах.

  3. Определения типов шаблонов

Множество других мелких, но важных вещей, но они имеют значение в рабочем коде.

Для меня это понятные концепции.Но списки инициализаторов, лямбда-выражения и шаблоны с переменным числом вариантов занимают второе место.

Я не могу решить между Тип нулевого указателя, Типы кортежей, или регулярное выражение.«Foreach» тоже там.«Умные указатели» само собой разумеется...:-)

В общем, очень жду обновления.

Лично я считаю, что интенсивное использование типа нулевого указателя приведет к обнаружению множества ошибок.Кортежи отлично подходят для работы с реляционными данными.Много классных вещей.

Он небольшой, но мне нравится идея настоящего нульптр.Это должно было быть ключевым словом с самого начала.

Замыкания для меня.

автоматическое ключевое слово

Лямбды и Концепции

Угловой кронштейн во вложенных объявлениях шаблонов.

Так что я смогу написать

std::vector<std::vector<int>> a;

вместо ужасного

std::vector<std::vector<int> > a;

А for (auto x : collection) Синтаксис итерации - это круто, я думаю...он буквально сокращает размер многих заголовков циклов в 4 и более раз (типы итераторов часто ...подробный)!

Это также означает, что вам не нужно разыменовывать итератор в теле цикла (при использовании традиционного цикла итератора вам всегда придется использовать *i или i->... чтобы получить значение элемента, но здесь вы можете просто использовать x), что в некоторых случаях делает код намного красивее.

Unicode, многопоточность, hash_tables, интеллектуальные указатели и регулярные выражения.

пс:Интересно, почему они просто не могут провести проверку кода gr8 и принять все библиотеки boost и tr1 в стандарты и облегчить жизнь всем.Все, что им тогда придется решить, — это договориться о работающей дополнительной модели сбора мусора.

Умные указатели.Это действительно имеет огромное значение, поскольку нет необходимости явно управлять объектами, выделенными в куче.

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

Синтаксис становится все хуже и хуже.

Вариативные шаблоны и лямбды хороши, хотя синтаксис обоих, к сожалению, довольно неприятен.

Мне нравится constexpr особенно в сочетании с шаблонами с переменным числом вариантов и пользовательскими литералами, мы наконец можем иметь двоичные литералы и множество других вкусностей.

obj.bitmask |= 00001010B; 

РЕГЭКС!!и библиотеки параллельного программирования, хотя я еще не знаю их всех особенностей.

Необработанные строковые литералы!Я думал, что строковые блоки в стиле Python — это здорово, но я ошибался!В C++0x необработанные строковые литералы невероятно полезны для форматирования текста.Языки разметки можно писать прямо в исходниках!

на данный момент мне понравилась большая часть C++0x, с которой я играл:

  • нульптр
  • static_assert
  • лямбды
  • общий_ptr и слабый_ptr
  • уникальный_ptr
  • decltype и авто

я не пробовал <regexp>...Я подумал, что это грандиозная идея...но я даже не нашел времени посмотреть на это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top