【发布时间】:2014-03-28 12:31:30
【问题描述】:
我有一个模板化函数,我想static_assert 它的类型大小为三。这段代码说明了我正在尝试做的事情,但不起作用:
template < typename T >
void foo( T& param )
{
// This line is the one that I need to figure out how to write
static_assert( 3 == std::extent< T >::value, "param must have a size of 3" );
}
int main( void )
{
int cArray[3];
std::array< int, 3 > stdArray;
foo( cArray );
foo( stdArray );
}
【问题讨论】:
-
尝试通过引用传递?我不认为 C 数组喜欢这样按值传递。
-
您应该解释它是如何“不起作用”的。你有错误吗?哪些?
-
我认为他/她在编译时得到“param must have a size of 3”。
-
谢谢 Neil Kirk 我确实错过了那里的
&。并且 DrD 是正确的静态断言触发。
标签: c++ arrays templates static-assert