Я создаю конструктор, который будет принимать пару входных итераторов.Я хочу, чтобы сигнатура метода имела семантику const
времени компиляции, похожую на:
DataObject::DataObject(const char *begin, const char *end)
Однако я не могу найти никаких примеров этого.Например, конструктор диапазона моей реализации STL для vector
определен как:
template<class InputIterator>
vector::vector(InputIterator first, InputIterator last)
{
construct(first, last, iterator_category(first));
}
, который не имеет гарантий времени компиляции const
.iterator_category
/ iterator_traits<>
также не содержит ничего, относящегося к const
.
Есть ли способ указать вызывающей стороне, что я не могу изменить входные данные?
edit, 2010-02-03 16:35 UTC
В качестве примера того, как я хотел бы использовать функцию, я хотел бы иметь возможность передать пару указателей char*
и знаю, основываясь на сигнатуре функции, что данные, на которые они указывают, не будут изменены.
Я надеялся, что смогу избежать создания пары const char*
указателей, чтобы гарантировать семантику const_iterator.В этом случае я могу быть вынужден оплатить шаблонный налог.