this
.std::span
. Как ты укажешь константность элементов этого отображения? Как ты укажешь константность элементов произвольного диапазона?Константность это свойство поля, а не типа.
using type_t = int;
using reference_t = type_t&;
using const_reference_t = const reference_t;
int
- это не явный тип, а параметр шаблона? Что если в шаблон передан уже константный тип? А ничего страшного не будет, просто reference_t
и const_reference_t
будут идентичными. Дело в том, что в конечном итоге компилятору важно только собственное имя типа и его квалификаторы. тогда для чего он нужен?
template< typename TArgument >
void foo( const TArgument argument );
foo<float>( ... );
не указывая тип аргумента явно?Если да, то получается, что мы можем использовать сразу float, а не запихивать в double число с f.
Dell p75f
Обратите внимание, что литералы типа с плавающей запятой по умолчанию относятся к типу double. Суффикс f используется для обозначения литерала типа float.
f
выполнит преобразование своего аргумента и приведет его к типу float
. Если этот идентификатор не использовать, то, согласно стандарту, литерал с плавающей точкой имеет тип double
, но сужающая конверсия типа все равно будет иметь место для случая, когда литерал используется для инициализации значения отличного от типа double
. Прочёл о том что при объявлении переменной типа float, значение в ней хранится как double, а для того чтобы задать тип хранения как float мы используем букву f.
Насколько я понимаю, сложной бизнес-логики в приложениях нет
а основная работа выполняется на серверах
Давай ты предложишь альтернативу исполнения
std::span
(да и всей стандартной библиотеке контейнеров) в рамках своей гипотезы. Сделай объявление внутренних типовstd::span
так, чтобы ты ни разу не использовал квалификаторconst
.В частности меня интересуют вложенные типы
pointer
,const_pointer
,reference
иconst_reference
.В качестве
_Tp
в шаблон может зайти как чистый тип, так и квалифицированный.Ну а далее, если у тебя получится предоставить убедительную альтернативу, мы двинемся еще дальше и напишем шаблонную функцию, в которой потребуется использовать и сам спан, и его вложенные типы.