绑定实用程序和模板化函数
Bind utility and templated functions
它遵循了一个使用中的bind
函数的最小示例
它进行了编译,这确实是一个微不足道的例子。
#include <functional>
void fn(int i) { }
int main() {
int x = 0;
auto f = std::bind(fn, x);
}
我会对使用模板化函数做同样的事情感兴趣
它遵循了上面的示例,尽管略有修改。这个不编译,但它准确地解释了哪一个是预期行为。
#include <functional>
template<typename T>
void fn(T t) { }
int main() {
int x = 0;
auto f = std::bind(fn, x);
}
一个非常简单的问题:是否可以将bind
实用程序与模板化函数一起使用?
我认为显而易见的解决方案是下面的代码。
#include <functional>
template<typename T>
void fn(T t) { }
int main() {
int x = 0;
auto f = std::bind(fn<int>, x);
}
如果您不想具体说明实例化,也许您可以再添加一个模板级别。我正在做一些测试。
编辑:我花了几个小时自己思考,在谷歌上搜索和阅读我打印的TC++PL4Ed,以及阅读GNU的libstdc++源代码的实现,我不知道也不知道如何按照你的要求去做。
事实证明,当您将fn
作为模板的名称时,它就不能再用作对象的名称。由于std::bind
从其参数的类型中推导出其返回类型,因此仅使用fn
就变得无效。要使一个可调用对象成为std::bind
的第一个参数,现在必须实例化模板fn
。
相关文章:
- C++实用程序::转换在静态链接库中不起作用
- 使用 system() 函数在C++程序中运行 cmd 命令
- 使用复制构造函数的程序输出错误
- 通过实用程序 fn 将捕获的 lambda 传递给 C 样式回调 - 错误
- 在C++中使用 4 个交换函数修复程序
- 当我尝试进行TPC-E测试时,实用程序抱怨"undefined reference"
- 在没有格式说明符的情况下在c++中使用类似printf的实用程序
- C++实用程序,用于将长开关语句转换为封装开关案例阶梯的简洁函数调用
- 从函数调用C++程序?
- 创建文件函数是否可以打开仅在WinObj实用程序中的全局目录下列出的设备的句柄?
- 从函数应用程序创建 std::vector
- 使用dllimport函数时程序崩溃
- C :实用程序名称空间中的正态分布
- 编译器将私人构造函数作为程序代码中的候选人提供
- 实用程序函数不会在 .h 文件中初始化并在 main 中定义.cpp
- 用于创建integral_constants的 aribtrary 元组的通用实用程序
- C++ - 定义自定义析构函数时程序崩溃
- Qt 创建器中的实用程序::转换::to_string_t中的链接错误
- 绑定实用程序和模板化函数
- 命名空间或类中的实用程序函数