【发布时间】:2023-03-22 11:25:01
【问题描述】:
为什么可变参数模板包中不允许使用特定类型?
template< typename T >
class Foo
{
public:
template< typename... Values >
void bar( Values... values )
{
}
template< T... values > <-- syntax error
void bar( T... values )
{
}
template< int... values > <-- syntax error
void bar( int... values )
{
}
};
不允许这样做的理由是什么?
有这方面的建议吗?
注意:替代方案是
-
std::initializer_list< T >没有缩小类型和{ }-brace-syntax - 一个(丑陋的)递归特征,分别检查所有类型:see here
【问题讨论】:
标签: c++ templates c++11 language-lawyer variadic-templates