Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 函数指针的模板参数推断失败_C++_Templates_Function Pointers - Fatal编程技术网

C++ 函数指针的模板参数推断失败

C++ 函数指针的模板参数推断失败,c++,templates,function-pointers,C++,Templates,Function Pointers,编译器无法扣除函数指针的模板参数 template< class Function > class foobar { Function f; public: foobar(Function _f) : f(_f) {} }; 我在下面这行遇到了麻烦 foobar f(foo); 编译器错误 error: missing template arguments before ‘f’ 目前,无法通过模板化构造函数推断对象的类型。但是,maker功能可以帮助: tem

编译器无法扣除函数指针的模板参数

template< class Function >
class foobar {
    Function f;
public:
    foobar(Function _f) : f(_f) {}

};
我在下面这行遇到了麻烦

foobar f(foo);
编译器错误

error: missing template arguments before ‘f’

目前,无法通过模板化构造函数推断对象的类型。但是,maker功能可以帮助:

template<class T>
foobar<T> make_foobar(const T& t) {
    return Foobar<T>(t);
}

...
auto f = make_foobar(foo);
模板
foobar make_foobar(施工测试与测试){
返回Foobar(t);
}
...
自动f=制作foobar(foo);

目前,无法通过模板化构造函数推断对象的类型。但是,maker功能可以帮助:

template<class T>
foobar<T> make_foobar(const T& t) {
    return Foobar<T>(t);
}

...
auto f = make_foobar(foo);
模板
foobar make_foobar(施工测试与测试){
返回Foobar(t);
}
...
自动f=制作foobar(foo);

模板参数推断适用于函数模板,而不适用于类模板。@KerrekSB,有人建议使用模板构造函数,不过-如果内存可用?@SergeyA:也许吧。但这对OP没有帮助,也不适用于OP…@KerrekSB,是的,但只要稍微修改一下他们的代码就可以帮助OP了。谢谢@KerrekSB。但它可以由编译器在编译时确定,对吗?那么为什么这样一个特性没有实现呢。还有其他方法吗?我可以做同样的模板参数推断,适用于函数模板,而不是类模板。@KerrekSB,有一个模板构造函数的建议,不过-如果内存可用的话?@SergeyA:也许吧。但这对OP没有帮助,也不适用于OP…@KerrekSB,是的,但只要稍微修改一下他们的代码就可以帮助OP了。谢谢@KerrekSB。但它可以由编译器在编译时确定,对吗?那么为什么这样一个特性没有实现呢。还有别的办法吗,我也可以这样做