C++ 返回对函数模板的引用

C++ 返回对函数模板的引用,c++,templates,C++,Templates,我有一个名为Managed的模板类,它有一个静态模板化的create()函数。我正在尝试编写一个助手,当传递托管子类类型时,它将返回该函数 typedef std::function<ScreenBase::ptr (WindowBase&)> ScreenFactory; template<typename T> ScreenFactory screen_factory() { ScreenFactory ret = &T::create<

我有一个名为
Managed
的模板类,它有一个静态模板化的
create()
函数。我正在尝试编写一个助手,当传递托管子类类型时,它将返回该函数

typedef std::function<ScreenBase::ptr (WindowBase&)> ScreenFactory;

template<typename T>
ScreenFactory screen_factory() {
    ScreenFactory ret = &T::create<WindowBase&>;
    return ret;
}
typedef标准::功能屏幕工厂;
模板
ScreenFactory screen_工厂(){
ScreenFactory ret=&T::create;
返回ret;
}
因为create本身接受模板参数,所以我显式地尝试获取对使用WindowBase&的实例化的引用。就我所知,上面的代码应该可以工作

但是,当我尝试调用它时,会出现以下错误:

error: expected '(' for function-style cast or type construction
ScreenFactory ret = &T::create<WindowBase&>;
                               ~~~~~~~~~~^
错误:函数样式转换或类型构造应为“(”
ScreenFactory ret=&T::create;
~~~~~~~~~~^

我不确定我做错了什么,有什么提示吗?

您缺少一个
模板
关键字:

template<typename T>
ScreenFactory screen_factory() {
    ScreenFactory ret = &T::template create<WindowBase&>;
    //                      ~~~~~~~^
    return ret;
}
模板
ScreenFactory screen_工厂(){
ScreenFactory ret=&T::模板创建;
//                      ~~~~~~~^
返回ret;
}

有关详细信息,请参阅

您缺少一个
模板
关键字:

template<typename T>
ScreenFactory screen_factory() {
    ScreenFactory ret = &T::template create<WindowBase&>;
    //                      ~~~~~~~^
    return ret;
}
模板
ScreenFactory screen_工厂(){
ScreenFactory ret=&T::模板创建;
//                      ~~~~~~~^
返回ret;
}

有关详细信息,请参阅
&T::template create
@PiotrS。非常感谢!如果您将其作为答案发布,我会将其标记为正确:)
&T::template create
@PiotrS。非常感谢!如果你把它作为答案贴出来,我会把它标记为正确:)