我们可以将元组写成如下形式:
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风格的注释:
auto tp = std::tuple<int /*age*/, bool /*name_exists*/>();