Что означает To[1] в концепции is_convertible_without_narrowing?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Что означает To[1] в концепции is_convertible_without_narrowing?

Сообщение Anonymous »

Следующая концепция из C++20 - The Complete Guide (адаптировано из http://wg21.link/p0870) запрещает сужающие преобразования. Например, преобразуйте float в int, как в 1.9f → 1.

Код: Выделить всё

template 
concept ConvertibleWithoutNarrowing = requires (From&& from) {
{ std::type_identity_t{std::forward(from)}} -> std::same_as;
};
В книге это используется для коллекции C, которая не должна иметь сужающих преобразований при добавлении данных:

Код: Выделить всё

template
requires ConvertsWithoutNarrowing
void add(C& collection, const T& val) {…}

// Usage:
std::vector vec_i;
add(vec_i, 1); // OK
add(vec_i, 1.3); // Does not compile.

Общую идею концепции я уловил, но что означает [1] в последней части, std::same_as;, делаешь?

Подробнее здесь: https://stackoverflow.com/questions/793 ... -narrowing
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»