Известны способы манипулирования типом целочисленного литерала
0L; // long
3U; // unsigned integer
1LL; // long long
Мне нужен способ инициализации целочисленного литерала до std::size_t
. Я предположил, что делать
2U; // unsigned int
будет достаточно, но я до сих пор получаю ошибку компилятора при вызове шаблона функции, который ожидает два аргумента одного и того же типа интегралов (никакой функции соответствия для вызова func(unsigned int, size_t
)
Я знаю/проверял, что явное кастинг (static_cast<std::size_t>(1)
) первый аргумент решает проблему, но я спрашиваю, есть ли более красивое решение
ИЗМЕНИТЬ
функция имеет сигнатуру
template <class T> const T& func(const T& a, const T& b);
EDIT2
Я не знаю, должен ли этот вопрос "винить", но я рад объявить, что это будет готов (cudos @malat для упоминания об этом в комментариях)