Библиотека knigago >> Компьютеры: Языки и системы программирования >> C, C++, C# >> Тур по С++. Краткий курс


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 1184, книга: Терминал
автор: Ирина Белояр

"Терминал" - захватывающая научно-философская фантастика, которая исследует этические и социальные последствия технологий, трансгуманизма и искусственного интеллекта. Действие романа разворачивается в мире, где люди живут в виртуальной реальности под названием "Терминал". Эта продвинутая технология позволяет им испытать любые переживания и освободиться от физических ограничений. Однако за это приходится платить высокую цену - стирание границ между реальностью и виртуальным...

СЛУЧАЙНАЯ КНИГА

Ковчег Фабиана (СИ). Gekas Край
- Ковчег Фабиана (СИ)

Жанр: Фэнтези: прочее

Серия: История Тальгарда

Бьерн Страуструп - Тур по С++. Краткий курс

3-е издание Тур по С++. Краткий курс
Книга - Тур по С++. Краткий курс.  Бьерн Страуструп  - прочитать полностью в библиотеке КнигаГо
Название:
Тур по С++. Краткий курс
Бьерн Страуструп

Жанр:

C, C++, C#

Изадано в серии:

неизвестно

Издательство:

неизвестно

Год издания:

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Тур по С++. Краткий курс"

Третье издание. Перевод и редакция Кирюхин В.Е. 2023 год. Настоящее издание представляет собой инициативный перевод замечательной книги по основам программирования на языке С++ за авторством самого создателя языка Бьерна Страуструпа* (Запрещенная организация в РФ). В книге описаны самые современные функции языка соответствующие стандарту C++20, в том числе ещё не полностью реализованные в компиляторах. Так же в книге описаны лучшие методы применения языка С++ с ссылками на C++ Core Guideline. Книга будет полезна как обучающимся, так и практикующим программистам желающим ознакомится с новинками С++.

Читаем онлайн "Тур по С++. Краткий курс". [Страница - 15]

ограничение на operator->(). Мы также можем использовать концепты для этого. Не существует концепта стандартной библиотеки, требующего, чтобы тип был типом класса (то есть class, struct или union), но мы
могли бы определить один из них:
template
concept Class = is_class_v || is_union_v;

// unions are classes

227

template
class Smart_pointer {
// ...
T& operator*() const;
T* operator->() const requires Class;
class or a union
};

// -> is defined if and only if T is a

Часто концепт является более общим или просто более подходящим, чем прямое использование предиката типа стандартной библиотеки.

16.4.3 Генераторы типов
Многие функции типа возвращают типы, часто новые типы, которые они вычисляют. Я называю такие функции генераторами типов, чтобы отличать их от предикатов типов. Стандарт предлагает некоторые, например, такие:
Некоторые генераторы типов
R = remove_const_t

R это T с удалением константности (если таковая имеется)

R = add_const_t

R это const T

если T это ссылка U&, R это U иначе T
R = add_lvalue_reference_t если T это lvalue ссылка, R это T иначе T&
R = add_rvalue_reference_t если T это rvalue ссылка, R это T иначе T&&
если b истинно, R это T иначе R не определено
R = enable_if_t
R это T если b истинно; иначе U
R = conditional_t
если существует тип, к которому все T могут быть неявно преR = common_type_t
образованы, R является этим типом; в противном случае R не
определен
если T является перечислением, R является его базовым типом;
R = underlying_type_t
в противном случае ошибка
если T может быть вызван с аргументами A..., R это тип возвраR = invoke_result_t
щаемого значения; иначе ошибка
Функции такого типа обычно используются при реализации утилит, а не непосредственно в коде приложения. Из них enable_if, вероятно, является наиболее распространенным в коде до создания концептов. Например, условно включенный -> для умного
указателя традиционно реализуется примерно так:
R = remove_reference_t

template
class Smart_pointer {
// ...
T& operator*();
enable_if operator->(); // -> is defined if and only if T is a
class
};

Я не нахожу это особенно легким для чтения, а более сложные варианты использования гораздо хуже. Определение enable_if основывается на тонкой языковой функции,
называемой SFINAE (“Сбой замены не является ошибкой”). Посмотрите это (только),
если вам нужно.

16.4.4 Связанные типы
228

Все стандартные контейнеры (§12.8) и все контейнеры, разработанные в соответствии с их шаблоном, имеют некоторые связанные типы, такие как их типы значений и
типы итераторов. В и стандартная библиотека предоставляет имена
для этих:
Некоторе генераторы типов
range_value_t
iter_value_t
iterator_t

Тип диапазона элементов R
Тип элементов на которые указывает итератор T
Тип итаратора диапазона R

16.5 source_location
При записи сообщения трассировки или сообщения об ошибке мы часто хотим вывести данные о местоположении ошибки в исходнике частью этого сообщения. Стандартная библиотека предоставляет source_location для этого:
const source_location loc = source_location::current();

Эта функция current() возвращает значение source_location, описывающее место в исходном коде, где оно появляется. Класс source_location имеет элементы file() и function_name(),
возвращающие строки в стиле C, а элементы line() и column(), возвращающие целые числа
без знака.
Оберните это в функцию, и мы получим хороший первый фрагмент сообщения журнала:
void log(const string& mess = "", const source_location loc = source_location::current())
{
cout = x
ceil(x)
Округление до целого в меньшую сторону --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.

Книги схожие с «Тур по С++. Краткий курс» по жанру, серии, автору или названию:

C++: базовый курс. Herbert Schildt
- C++: базовый курс

Жанр: Программирование: прочее

Год издания: 2008

Серия: Изучайте c++ с профессионалами