【发布时间】:2015-03-08 08:01:08
【问题描述】:
我想为std::function<T(Variable nums of arguments)> 创建一个模板,该模板通过调用默认构造函数返回类的默认值。
我试过了:
template <class T,class... Args> inline std::function<T(Args...)> zero(){
return [](Args...){ return T();};
}
我想在你只需要默认值而不需要复杂函数的场合使用它,例如在我的Image<T> 类中:
template <typename T> class Image{
...
void drawEachPixel(std::function<T(size_t,size_t)> func){
forRange(x,w){
forRange(y,h){
this->setPixel(x,y,func(x,y));
}
}
}
...
};
要清除我可以调用的图像:
image.drawEachPixel(zero());
编译时出现错误no matching function for call to 'Image<unsigned char>::drawEachPixel(std::function<unsigned char()>)'...
【问题讨论】:
标签: c++ templates c++11 lambda variadic-templates