
3 Feb
2017
3 Feb
'17
5:17 a.m.
There is only one proper way to represent the concept of a T that might not be a T: optional<T>, so I think you are defining your objects backward. The "top level" type should be observer<T>, and if you want to support the concept of nullness, use optional<observer<T>>. This is a much more consistent way to treat nullness throughout the language, rather than special-casing it for every type.