在下面的代码中,我想知道std::tuple_size<T>{}
和std::tuple_size<T>()
如何返回元组的大小。在查看docs使用此调用时,似乎我应该使用() operator
或静态::value
成员变量来获取元组大小。但是,在运行此代码时,它会编译并生成正确的输出,tuple_size
如何从构造函数返回值?
#include <iostream>
#include <tuple>
template <class T>
void test(T)
{
//std::make_index_sequence<std::tuple_size<T>{}>{} Seen used like this spurned my ?
std::cout << std::tuple_size<T>{} << '\n';
std::cout << std::tuple_size<T>() << '\n';
std::cout << std::tuple_size<T>()() << '\n';
std::cout << std::tuple_size<T>::value << '\n';
}
int main()
{
test(std::make_tuple(1, 2, 3.14));
}
答案 0 :(得分:1)
http://en.cppreference.com/w/cpp/utility/tuple/tuple_size
表示:
成员常量
值
[静态]
sizeof ...(类型)(公共静态成员常量)
会员职能
operator std :: size_t
将对象转换为std :: size_t,返回值(公共成员 功能)
运算符()
(C ++ 14)
返回值(公共成员函数)
所以难怪。 第1&amp;第二种形式使用转换运算符 第三种形式显式调用函数调用运算符 第四种形式使用静态成员。 这是一个非常方便的标准实用程序。没有其他标准工具具有尽可能多的便利功能。