Я согласен с тем, что указание vector
неуместно, и приветствую ваши попытки сделать интерфейс более полезным.
Если decode
ожидает непрерывную последовательность uint8_t
, проверенное (и наиболее гибкое) решение состоит в том, чтобы просто взять const uint8_t*
и std::size_t
(или, альтернативно, два указателя, но указатель и длина более идиоматична).
В C ++ 20 вы можете сделать это с одним аргументом типа std::span<const uint8_t>
. Или, возвращаясь к указателям, если вы действительно хотите использовать современные библиотечные инструменты ради этого, вы можете запутать людей с помощью std::experimental::observer_ptr
.
Вы можете также рассмотреть вопрос о создании decode
шаблона, который принимает любую пару итераторов и (если требуется смежность) обязывает, даже если только по документации, чтобы итераторы отражали последовательность смежных . Но создание всего шаблона не всегда то, что вы хотите, и это не всегда полезно.