Re[4]: ненависть к итераторам
От: Videoman Россия https://hts.tv/
Дата: 25.12.20 21:42
Оценка: +1
Здравствуйте, rg45, Вы писали:

R>Ну тогда просто слегка допилить фильтр. Но общим остается то, что отдельная версия для wchar_t не нужна — whar_t должен автоматом подхватываться одной из трех других версий:


R>
R>template<typename It, typename T>
R>using is_iterator_compatible = std::integral_constant<bool,
R>  std::is_same_v<T, typename std::iterator_traits<It>::value_type> ||
R>  (std::is_same_v<wchar_t, typename std::iterator_traits<It>::value_type> && sizeof(T) == sizeof(wchar_t))
>>;

R>template<typename It, std::enable_if_t<is_iterator_compatible<It, char>::value, int> = 0>
R>constexpr uint_t CalcSomething(It beg, It end) // ...

R>template<typename It, std::enable_if_t<is_iterator_compatible<It, char16_t>::value, int> = 0>
R>constexpr uint_t CalcSomething(It beg, It end) // ...

R>template<typename It, std::enable_if_t<is_iterator_compatible<It, char32_t>::value, int> = 0>
R>constexpr uint_t CalcSomething(It beg, It end) // ...

R>


Да. Ну получается, в общем, это подход который предложил Voivoid. Так работает.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.