有什么方法可以命名元组项目吗?

问题描述 投票:0回答:1

我们可以将元组写成如下形式:

auto tp = std::tuple<int, bool>();

我有很多,它们上面都有一个注释,命名每个元素代表什么,例如

//age, is_alive
auto tp = std::tuple<int, bool>();

有没有办法做这样的事情?

auto tp = std::tuple<int age, bool name_exists>();

我需要元组,因为我在编译时使用带有索引的

std::get
递归遍历项目。这不能使用结构来完成。我的代码功能的任何部分都不需要知道元素的名称(例如,这使得使用
std::map
std::any
有点荒谬)。这只是为了可读性并提供更自然的界面。

更新:我觉得这个问题可能会被重复提出。澄清一下,我不需要按名称访问元素。我只想要这个名称以方便阅读。我可以修改该代码,但用逗号分隔名称似乎比在代码上方添加注释更糟糕。

另一项更新:有人可能建议保留评论作为最佳解决方案。注释的问题在于它们的缩进总是与元组定义不同。这意味着要查看与名称相对应的元素,必须对它们进行计数。这是我试图解决的主要问题。考虑这个例子:

//account_ptr, uid, sender, subject, date (seconds from epoch), read, flagged
using SomeTuple = std::tuple<"tag_for_this_tuple", std::string, int, std::string, std::string, std::string, bool, bool>;
c++ tuples
1个回答
0
投票

你可以只使用C风格的注释:

auto tp = std::tuple<int /*age*/, bool /*name_exists*/>();
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.