templates - 编译时的 C++ 接口声明?
问题描述
我试图声明一个任意类型变量(比如x
),唯一的要求是它包含一个已知签名的函子,比如double operator()(double x)
避免std::function
开销。
特别是,假设用户应该能够初始化x
一个包含额外数据 + 所需运算符的对象,但声明应该对类型保持矛盾,只说明运算符的存在。
我试图做的可能看起来有点做作,但在我看来应该有一种简单的方法来实现这一点,尤其是在现代 C++ 中,对吧?我见过模板推导,auto
关键字和概念,但我无法将这些东西放在一起,以实现我所需要的。
每个请求的伪代码:
// auto should be instead some generic type specification that requires double operator(double) that I don't know how to write
auto x;
//Here's an example that would conform to x type specification above
struct Field
{
double operator()(double time);
}
void main()
{
x = Field();
}
解决方案
推荐阅读
- data-warehouse - 清理大量数据的最佳方法
- laravel - laravel 8 : 注册后发送邮件验证 laravel
- flutter - Flutter - 即使应用程序未打开,是否有办法定期执行方法
- bash - Bash 重定向不适用于 Rscript
- powerbi-desktop - 仅在 powerbi 中创建选定月份的计算去年日期
- perl - 为什么 perl 在已经加载模块时会尝试重新加载模块?
- r - 过滤一系列文件中的特定行元素
- c# - 当行悬停并且列值与另一行匹配时显示工具提示
- express - 带有 expressjs 和 sequelize 的 GraphQl 模式(关联)
- javascript - Electron Windows 应用程序托盘上下文菜单创建持久的不可见电子窗口