К сожалению, в стандарте нет свободных функций cbegin
/ cend
, равно как и нет никаких обратных версий.Тем не менее, вы всегда можете использовать приведение, чтобы получить постоянный итератор:
auto it = std::begin(static_cast<T const &>(x));
Используя std::add_const
из <type_traits>
, вы даже сможете получить что-то довольно общее, если вам это нужно много.
Функции-члены контейнера cbegin
/ crbegin
и т. Д. Являются частью C ++ 11, и GCC поддерживает их в течение некоторого времени;вполне возможно начиная с 4.3 (когда впервые появилась поддержка C ++ 11).GCC 4.6 определенно поддерживает их;если у вас возникли проблемы, опубликуйте проблемный код.