Я пытаюсь проверить, можно ли сохранить каждый параметр в пакете параметров в пределах 8 байт (sizeof <= 8) </p>
У меня есть сигнатура функции:
template <typename Return, typename... Arguments>
inline auto invoke(std::uint64_t hash, Arguments... arguments) -> Return
Использование сгибавыражения, которые я пробовал:
static_assert((sizeof(arguments) <= 8 && ...));
Которые не удалось скомпилировать с unexpected token '...', expected 'expression'
- я предполагаю, что это неверно или неправильно?
Используя концепции и ограничения C ++ 20, я предполагаю что-то вместестроки возможны?
template <typename Return, typename... Arguments> requires (sizeof(arguments) <= 8 || ...)
inline auto invoke(std::uint64_t hash, Arguments... arguments) -> Return
Я предполагаю, что есть способ использовать стандартную библиотеку, чтобы сказать, проверяет, что тип вписывается в std::uint64_t
, скажем, также?