【发布时间】:2019-08-22 12:06:32
【问题描述】:
我正在尝试编写自己的 tuple_size 函数实现,然后再查看它是如何在 C++ 库中实现的。我现在遇到的问题是我得到了错误的答案(1),我没有看到任何先决条件。感谢任何帮助。
#include <iostream>
using namespace std;
namespace tuple_helpers
{
template <typename... Args>
struct _tuple_size;
template<typename T, typename... Args>
class _tuple_size<T, Args...>
{
public:
constexpr static size_t __size()
{
return _tuple_size<Args...>::__size() + 1;
}
};
template<>
class _tuple_size<>
{
public:
constexpr static size_t __size()
{
return 0;
}
};
template<typename T>
class tuple_size
{
public:
enum { value = _tuple_size<T>::__size() };
};
}
int main()
{
using MyTuple = tuple<int, string, bool, double>;
cout << "Size of the tuple is: " << tuple_helpers::tuple_size<MyTuple>::value;
return 0;
}
【问题讨论】:
-
与您的问题无关,但请注意以双下划线开头的符号(如
__size)are reserved in all scopes。
标签: c++ tuples c++17 variadic-templates