这里有个新手问题...
如何创建一个元组类型,其中元组的一个项目是一个特定的项目enum?
enum class MyEnum
{
MyEnum_FirstItem
};
typedef std::tuple<int, MyEnum::MyEnum_FirstItem> MyTuple; // constant "MyEnum::MyEnum_FirstItem" is not a type name
Run Code Online (Sandbox Code Playgroud)
如何获得枚举项的类型而不是值?
PS用“获取枚举项目类型”搜索Google,但未找到任何内容。
我来自TypeScript,出于文档目的,我曾经在那里做过。另外,真正的问题可能应该是:c ++中是否有确切的数字类型?
如何获得枚举项的类型?
的类型MyEnum_FirstItem是MyEnum。枚举器没有不同的类型。
(但是,请继续阅读...)
您想在这里做什么?您是否要创建一个元组,其第二个参数只能具有值MyEnum_FirstItem?– Sneftel 3分钟前
@Sneftel是的,完全是– Nurbol Alpysbayev 2分钟前
C ++中是否有确切的数字类型?
其实,是。
std::integral_constant<int, 3>是代表值3 的类型int。它在模板元编程中使用。
也许您可以这样做。因为,虽然MyEnum_FirstItem不是的它自己的类型,你可以用它来产生这样的事,就像这样:
std::integral_constant<MyEnum, MyEnum::MyEnum_FirstItem>
Run Code Online (Sandbox Code Playgroud)
所以也许:
std::tuple<int, std::integral_constant<MyEnum, MyEnum::MyEnum_FirstItem>> MyTuple;
Run Code Online (Sandbox Code Playgroud)
(参考)
我猜想这个枚举的目的是作为“标签”,以区别各种本来相同的元组类型,以用于记录目的(并防止代码库中的“交叉污染”)。
如果是这样,我实际上将struct为该工作创建一堆empty ,就像其他标记实现一样。
struct TagA {};
struct TagB {};
std::tuple<int, TagA> MyTuple;
Run Code Online (Sandbox Code Playgroud)
它更易于使用和阅读,并且仍然可以根据需要将它们绑定到名称空间中。
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |