我有一个模板参数T,我知道它将是
MyArray<Tbis, n>
有没有办法取回整数n所以我可以用它作为模板参数?
致以最诚挚的问候,
答案 0 :(得分:1)
这是你想要做的吗?
#include <iostream>
#include <array>
template <typename T, size_t N>
void f(std::array<T, N>& a)
{
std::cout << N << '\n';
}
int main()
{
std::array<int, 34> a;
f(a);
}
答案 1 :(得分:1)
如果我正确理解了这个问题,你想获得一个数组的大小,并用作模板参数。为此,您可以使用size(),因为它是一个constexpr。
这样的事情:
#include <iostream>
#include <array>
typedef std::array< int, 72 > myArray;
template< int N = myArray().size() >
struct A
{
void foo()
{
std::cout << N << std::endl;
}
};
int main()
{
A<> a;
a.foo();
}
答案 2 :(得分:0)
是。成员函数(至少在Visual Studio 2010上)size()
和max_size()
都返回项目数。
#include "stdafx.h"
#include <array>
#include <iostream>
template<class T>
int tuple_size(T t)
{
return std::tuple_size<T>::value;
}
int main()
{
std::array<int, 4> nums;
std::cout << "size(): " << nums.size() << "\n";
std::cout << "max_size(): " << nums.max_size() << "\n";
std::cout << "tuple_size: " << tuple_size(nums) << "\n";
}