【发布时间】:2011-05-03 15:55:15
【问题描述】:
您可以使用模板来查找数组的长度。
template<typename T, size_t N>
size_t arraylen( T(&)[N] )
{ return N; }
我想把这个想法更进一步。
struct Foo
{
template< typename T, size_t N >
Foo( /* ??? */ ) : ptr(?), size(?) { }
char* ptr;
size_t size;
};
int main()
{
Foo foo("test");
const char bar[] = "test2";
Foo foo2(bar);
const char* baz = bar;
Foo foo3(baz); // compiler error.
}
但是,在我的一生中,我无法编译语法。我认为我缺少的部分原因是我不太明白T(&)[N] 的含义。
T(&)[N] 是什么意思?
如何在允许访问数组地址的同时仍使用模板获取其大小?
【问题讨论】:
标签: c++ templates metaprogramming