【发布时间】:2018-10-25 03:20:37
【问题描述】:
有没有办法将变量模板参数包中的所有类型衰减为它们的值类型?
例如:
template < typename... T >
void foo( T... ts ) // I do not want to have references here
{
}
template < typename... T >
void bar( T&&... ts )
{
foo( ts );
}
所以,我想做的是类似于std::decay,但在整个可变参数模板包上。该怎么做?
如果我这样调用这些函数:
struct A{
};
A a;
bar( 3, a, 5.5f );
然后我希望所有内容都被复制并按值传递给函数foo。
PS:我的编译器是gcc 6.2.0,最高支持c++17
【问题讨论】:
-
std:decay_t<T>... ts没有用吗?我假设你已经尝试过了。 -
我很困惑。
foo(ts...);已经复制了参数。 -
@T.C.那为什么不回答呢?
void foo( T... ts )是否足以确保包中的所有类型都复制参数?有没有一种类型获得引用的情况?