2
我想为std::function<T(Variable nums of arguments)>
创建一个模板,该模板通过调用默认构造函数来返回类的默认值。C++ 11:用于调用类型的默认构造函数的variadic lambda模板
我尝试这样做:
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()>)'
...