Что означает 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

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