返回对函数模板的引用
Returning reference to a function template
我有一个名为Managed
的模板类,它具有静态模板化create()
函数。我正在尝试编写一个帮助程序,它在传递托管子类类型时返回该函数。
typedef std::function<ScreenBase::ptr (WindowBase&)> ScreenFactory;
template<typename T>
ScreenFactory screen_factory() {
ScreenFactory ret = &T::create<WindowBase&>;
return ret;
}
由于 create 本身需要模板参数,因此我显式尝试获取对采用 WindowBase& 的实例化的引用。据我所知,上面的代码应该可以工作。
但是,当我尝试调用它时,出现以下错误:
error: expected '(' for function-style cast or type construction
ScreenFactory ret = &T::create<WindowBase&>;
~~~~~~~~~~^
我不确定我做错了什么,有什么指示吗?
您缺少一个template
关键字:
template<typename T>
ScreenFactory screen_factory() {
ScreenFactory ret = &T::template create<WindowBase&>;
// ~~~~~~~^
return ret;
}
有关详细信息,请参阅我必须在哪里以及为什么必须放置"模板"和"类型名称"关键字?
相关文章:
- 具有常量引用参数的函数模板专用化
- C++有什么方法可以在既不调用函数模板也不提供其模板参数的情况下引用函数模板?
- 两个函数模板候选项.将一个参数作为引用后,选择不太专业的模板
- 请参阅在 Visual Studio 2019 中捕获 std::exception 时对函数模板实例化消息的引用
- 我应该通过常量引用还是模板函数中的值传递?
- 为什么 std::函数模板构造函数不使用通用引用?
- 按值和按引用差异的函数模板
- 如何声明接受转发引用并返回引用或副本的函数模板
- 定义重载C++函数模板的原型时,使用其名称引用以前的定义是否合法?
- 专门化采用通用引用参数的函数模板
- C++ 中的函数模板专用化和右值引用
- VS2013无法根据模板参数指定具有通用引用和返回类型的函数模板
- 具有通用引用的成员函数模板不接受左值
- 在具有通用引用参数的函数模板中使用类模板
- 是否可以使函数模板从函数引用中获取“decltype”
- 返回对函数模板的引用
- 在 c++11 中,当参数类型为常量左值引用与非常量左值引用时,函数模板类型推导的工作原理
- 符号引用调用模板类的成员函数时出现的错误
- 具有引用参数的重载函数模板
- 如何创建一个同时接受数组和向量引用的函数模板