1. не вижу прям уж такой проблемы, нечто подобное и в Rust придётся делать (же?)
Да и Дедфуд там говорит
Да не, просто придираться к визиторам и тому подобному — это, ну, такое.
Меня вот куда больше печалит то, что void не является полноценным членом системы типов, и это больно бьёт по дженерик-коду и по типотеоретику внутри меня. И исправить это так, чтобы система типов стала чуть менее unsound и при этом осталась практичной, похоже, нельзя.
https://habr.com/ru/post/415737/#comment_18833351https://habr.com/ru/post/415737/#comment_18833351
2. optional - аналог Nullable. Тут либо есть, либо нет, не надо кэтчить типы