References: =================================================== Acknowledgement: - Almost all of the ideas used in this solution were discussed clearly by Jonathan Boccara here: https://www.fluentcpp.com/2016/12/08/strong-types-for-strong-interfaces/ -