Замена boost::has_range_const_iterator на std ⇐ C++
-
Anonymous
Замена boost::has_range_const_iterator на std
У меня есть большая библиотека сериализации, основанная на boost::has_range_const_iterator. Приведенный ниже код является частью библиотеки сериализации, используемой в игровой сети.
шаблон autooperator()(T const& vals) const -> имя типа std::enable_if::type { auto length = std::distance(std::begin(vals), std::end(vals)); if (length > std::numeric_limits::max()) throw BadMessage("Длина слишком велика, чтобы соответствовать переменной длины"); (*this)(static_cast(длина)); for (auto& val: vals) (*это)(вал); } Есть ли какая-нибудь замена в std для boost::has_range_const_iterator в приведенном выше контексте?
РЕДАКТИРОВАТЬ: Что я пробовал?
#include #include #include #include #include шаблон структура has_const_iterator { частный: шаблон статический тест std::true_type(typename std::add_const::type*); шаблон статический std::false_type test(...); публика: static const bool value = decltype(test(nullptr))::value; }; интервал основной() { // Пример использования: std::vector vec; if ( has_const_iterator::value ) std::cout
У меня есть большая библиотека сериализации, основанная на boost::has_range_const_iterator. Приведенный ниже код является частью библиотеки сериализации, используемой в игровой сети.
шаблон autooperator()(T const& vals) const -> имя типа std::enable_if::type { auto length = std::distance(std::begin(vals), std::end(vals)); if (length > std::numeric_limits::max()) throw BadMessage("Длина слишком велика, чтобы соответствовать переменной длины"); (*this)(static_cast(длина)); for (auto& val: vals) (*это)(вал); } Есть ли какая-нибудь замена в std для boost::has_range_const_iterator в приведенном выше контексте?
РЕДАКТИРОВАТЬ: Что я пробовал?
#include #include #include #include #include шаблон структура has_const_iterator { частный: шаблон статический тест std::true_type(typename std::add_const::type*); шаблон статический std::false_type test(...); публика: static const bool value = decltype(test(nullptr))::value; }; интервал основной() { // Пример использования: std::vector vec; if ( has_const_iterator::value ) std::cout