如何解决在没有函数调用的情况下确定 std::array 返回类型的大小
我有一个类 B
,它将 A
之类的类作为模板参数。
template<typename T>
class B{
///...
每个 T
都有一个返回 operator()()
的 std::array<double,N>
。我希望每个专业化 B<T>
都能够推导出 N
,而无需额外要求 T
且无需调用 operator()()
。我该怎么做?
下面是一个示例 T
,并标记为 class A
:
template <int N>
class A {
public:
A() {}
std::array<double,N> operator()() {
std::array<double,N> the_integers;
for (int i = 0; i < N; ++i) {
the_integers[i] = i;
}
return the_integers;
}
};
解决方法
您可以像这样向 B
添加成员
static constexpr std::size_t ArraySize = std::tuple_size_v<decltype(std::declval<T&>()())>;
这是一个demo
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。