首页 > 解决方案 > C ++“使用”关键字用于唯一类型而不是别名

问题描述

using关键字可以用作“typedef”的现代 C++ 等效项。我发现能够为我正在使用的原始类型声明一个在语义上更有意义的别名是非常方便的,例如ErrorCode,而不是unsigned int. 最近我一直在尝试使用编码std::variant并注意到,由于我只定义了一个类型别名而不是一个新类型,我将无法拥有一个std::variant具有两个不同别名的aint并仍然使用std::get.

C++ 中有没有办法声明类似 Haskelldata关键字的东西,编译器会在其中识别例如new_type ErrorCode = int实际类型而不仅仅是别名?我的目标是稍后从一个变体中访问该类型的值,例如std::get<ErrorCode>(myVariant)with variant 也持有 eg new_type UserId = int

标签: c++haskelltypeskeywordalgebraic-data-types

解决方案


推荐阅读