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

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

Сообщение Anonymous »

Следующая концепция из полного руководства по C++20 (адаптировано из http://wg21.link/p0870) запрещает сужающие преобразования. Например: float to 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++»