【发布时间】:2021-01-08 22:51:08
【问题描述】:
我是 C++ 元编程的新手,几天前我决定用可变参数包编写一个模板,它知道参数包中的哪个位置首先出现int。更准确地说,我希望有一个名称为 GetIntPos 的 struct 和 static constexpr int value,它表示 int 在参数包中以 1 开头的位置,如果参数包中没有 int 参数类型,则为 0。例如
cout<<GetIntPos<long, char, int, long>::value; // must print 3
cout<<GetIntPos<int, int, long>::value; // must print 1
和
cout<<GetIntPos<long, long, char>::value; // must print 0;
怎么做?
【问题讨论】:
-
到目前为止你有什么尝试?
-
@StephenNewell 我试图用它的帮助模板编写结构。辅助模板是递归可变的,并且还获得一个 int 模板参数,该参数随着每次递归移动而增加,直到递归结束或找到 int。
-
@StephenNewell - 为什么?这个问题很清楚,有一个精确的问题陈述,并且可以在 SO 帖子中回答。无需将所有内容都变成调试会话。
-
StackOverflow 不是免费的编码服务。你应该try to solve the problem first。请更新您的问题以在minimal reproducible example 中显示您已经尝试过的内容。如需更多信息,请参阅How to Ask,并拨打tour :)
-
@StoryTeller-UnslanderMonica - 我的理解是我们应该看到尝试,而不仅仅是提供解决方案。
标签: c++ metaprogramming variadic-templates template-meta-programming parameter-pack