我有一个例子来说明我的问题:
#include <utility>
class Foo {
public:
Foo(int i) {}
};
template<typename T, typename ...Args>
class Bar {
public:
T t;
Bar(Args &&... args) : t(std::forward<Args>(args)...) {}
};
如果我想实例化这个模板:
Bar<Foo> foo(1);
编译器抛出错误:
no matching function for call to ‘Bar<Foo>::Bar(int)’
所以我必须写这个:
Bar<Foo, int> foo(1);
这很烦人,特别是如果我有一些具有一长串参数的类。
那么有什么方法可以摆脱显式显示参数包中的类型