【发布时间】:2017-09-26 12:07:18
【问题描述】:
我正在尝试编写具有多个类型参数T1 和T2 的模板类。该类有一个类型为std::promise<T2> 的私有成员。
template <class T, class T2>
class Test
{
public:
void setValue(T2 value)
{
promise.set_value(value);
}
void setValue()
{
promise.set_value();
}
private:
std::promise<T2> promise;
};
当T2 不是 void 时,这个类编译得很好(只要你不调用没有参数的setValue。当T2 是 void 时,我得到一个编译器错误:
error C2182: 'value' : illegal use of type 'void'
当T2 不为空时,我想使用第一个setValue 方法,它有一个T2 类型的参数。当T2 无效时,我想使用第二个setValue 方法,它不带参数。我看过很多例子,但我对模板编程比较陌生,我似乎无法让它工作。
是否有可能用 std::enable_if 以某种方式完成此任务?还是使用模板专业化?
【问题讨论】:
标签: c++