xml*_*lmx 6 c++ class definition variadic-templates c++17
template<typename... Args>
struct A
{
Args&... args_;
//
// error : only function and template parameters can be parameter packs
//
A(Args&... args) : args_(args)
{}
};
int main()
{
auto a = A(1, 2, 3);
}
Run Code Online (Sandbox Code Playgroud)
我的编译器是clang 5.0
用-std=c++1z
.
如何在这种情况下定义一个可以保存可变参数模板参数的类?
据我所知,这是不可能的.您必须使用a std::tuple
来存储参数:
template<typename... Args>
struct A
{
std::tuple<std::decay_t<Args>...> args_;
A(Args&&... args) : args_(std::make_tuple(std::forward<Args>(args)...))
{}
};
Run Code Online (Sandbox Code Playgroud)
从C++ 17开始,您可以使用std::apply
带有args_
as参数的cal函数,而不是解压缩它们:
std::apply(func, args_);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
766 次 |
最近记录: |