C++ 对从std::array派生的类使用std::tuple\u size

C++ 对从std::array派生的类使用std::tuple\u size,c++,c++11,C++,C++11,我有如下代码: #include,但因为它只讨论std::tuple,所以我认为它不能应用。你知道为什么这不起作用吗?如果有一种简单的方法可以让它起作用吗?只要调用size()-对于数组,它是一个constepr 请看这里: 或检查§23.3.2.1.3,其中定义为constexpr size_type size()无例外如果你同意,你可以说std::tuple\u size::value@litb-Perfect,谢谢!这实际上比我想象的要容易…我不明白为什么链接的问题在这里不适用。您可以为您

我有如下代码:

#include,但因为它只讨论std::tuple,所以我认为它不能应用。你知道为什么这不起作用吗?如果有一种简单的方法可以让它起作用吗?

只要调用
size()
-对于数组,它是一个
constepr

请看这里:
或检查§23.3.2.1.3,其中定义为
constexpr size_type size()无例外

如果你同意,你可以说
std::tuple\u size::value
@litb-Perfect,谢谢!这实际上比我想象的要容易…我不明白为什么链接的问题在这里不适用。您可以为您的类型专门化tuple_size,不过我个人更喜欢Johannes的建议。这似乎不起作用,因为size()不是静态方法,而且我没有该类的实例。没有实例就不能调用DoubleArray::size()。@Turbo:为什么它不是一个静态方法?它不会根据实例而改变,所以它没有理由是非静态的。@Nicolas他应该如何回答这个问题?这些问题是标准解释的问题。有关类似的论点,请参见。在这种情况下,
array::size
是静态的还是非静态的是一个实现细节。@potatostater:我的意思是他应该让他的
DoubleArray
类有一个
static
constepr
size方法。它是否被称为
size
无关紧要。@Nicolas解决了手头的问题,但牺牲了与
array
的向后兼容性。听起来他想要一个统一的界面。
error: incomplete type ‘std::tuple_size<DoubleArray>’ used in nested name specifier