Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Вот здесь можно найти более продвинутый вариант, с переиспользованием реализации clone_if_necessary. Однако, чтобы его получить, пришлось изменить следующее:
Поиграться в on-line с продвинутой версией можно здесь.
сейчас разрешен как переход undefined -> defined, так и defined -> undefined
Практически да. Но переходы undefined -> defined инициируют только некоторые сеттеры. Остальные сеттеры возвращают ссылку на текущий тип без инициирования трансформации. Поэтому на практике переходов defined -> undefined нет.
Чтобы такой переход возник, необходимо, чтобы в каком-то сеттере разработчик явным образом вызвал clone_if_necessary, да еще и указал там undefined. Это уже намеренное поведение и вряд ли есть смысл от него защищаться.
Немного C++ной шаблонной магии и CRTP для контроля за корректностью действий программиста в компайл-тайм