相关疑难解决方法(0)

variadic模板参数包扩展函数调用

我正在寻找类似的东西:

template< typename T>  
void func(T t)
{
}

template< typename... Parms> 
void anyFunc( Parms... p)
{
    func<Parms>(p)... ;  //error 
    func(p)... ;         //error 
}
Run Code Online (Sandbox Code Playgroud)

如果参数包扩展在另一个函数调用内完成,它可以工作:

template< typename T>
int some(T t)
{}

template< typename... Parms>
void func(Parms ...p)
{}

template< typename... Parms>
void somemore(Parms... p)
{
   func( some(p)...);
}

int main() 
{
 somemore(1,2,3,4,10,8,7, "Hallo");
}
Run Code Online (Sandbox Code Playgroud)

参数包扩展也适用于基类初始值设定项列表.

是否有任何解决方案也适用于将返回'void'的函数.上面的解决方法不会,虽然使用函数调用返回参数列表中的void可能永远不会工作.

有任何想法吗?

variadic-templates c++11

17
推荐指数
2
解决办法
5641
查看次数

C++ 11可变参数模板和逗号分隔表达式等价

在可变参数模板中,...运算符将参数包扩展为一系列以逗号分隔的参数(最简单的形式).我的问题是:为什么调用some_function()为多个参数逗号分隔的作品,并用...运算符调用它不?

我在谈论这段代码:

template<typename... Args> inline void expand(Args&&... args) 
{
   some_function(22),some_function(32); // Works
   some_function(args)...; // Doesn't work - ERROR
}
Run Code Online (Sandbox Code Playgroud)

这两条线不应该产生类似的输出吗?

c++ variadic-templates c++11

4
推荐指数
2
解决办法
1104
查看次数

标签 统计

c++11 ×2

variadic-templates ×2

c++ ×1