История изменений
Исправление
kvpfs,
(текущая версия)
:
Так это встречают все, кто руками реализует кэширование доступа. То есть, сценарий выбора между [дорогим, но mutable] и [дешевым, но r/o] доступом к объекту. И на этот сценарий отлично налазит begin/cbegin, которые, как нам и завещал стандарт, могут иметь разные кишки. Или не налазит?
А в чём проблема? Ну не учим свой неконстантый итератор кастоваться в константный, это просто не скомпилится. Если разговор о «универсальной» begin(), то range’ы дают возможность кастомизировать их поведение, там все эти ranges::[c]begin() и смежные штуки обзываются «customization point object», или можно специализацию для своего итератора в std:: написать.
PS: хотя не совсем уверен по поводу range’ов, не уверен, что правильно понимаю «customization point object», не факт, что можно свою версию там подставить.
Исходная версия
kvpfs,
:
Так это встречают все, кто руками реализует кэширование доступа. То есть, сценарий выбора между [дорогим, но mutable] и [дешевым, но r/o] доступом к объекту. И на этот сценарий отлично налазит begin/cbegin, которые, как нам и завещал стандарт, могут иметь разные кишки. Или не налазит?
А в чём проблема? Ну не учим свой неконстантый итератор кастоваться в константный, это просто не скомпилится. Если разговор о «универсальной» begin(), то range’ы дают возможность кастомизировать их поведение, там все эти ranges::[c]begin() и смежные штуки обзываются «customization point object», или можно специализацию для своего итератора в std:: написать.