// // traits.hpp // opaque_typedef // // Created by Sam Jaffe on 12/1/23. // Copyright © 2023 Sam Jaffe. All rights reserved. // #pragma once namespace types { template struct underlying_type { using type = Base const &; }; template struct underlying_type> { using type = typename Base::underlying_type; }; template using underlying_type_t = typename underlying_type::type; }