重载运算符<<以接受模板函数

2024-01-03

我试图能够使用函数编写可扩展语法,但似乎找不到接受模板函数的正确语法。我使用的是 Visual C++ 2008。它将接受与模板函数相同类型的变量或类似的非模板函数,但不接受模板函数本身。

错误 1 ​​错误 C2679: 二进制 '*** )

class Grammar {
    friend Grammar operator << ( const Grammar& lhs, const char* rhs ) {
        return lhs; // append rhs to grammar
    }
    template<typename T>
    friend Grammar operator << ( const Grammar& lhs, T (*rhs) () ) {
        return lhs; // append rhs() to grammar
    }
};

template<typename T>
class ExpressionParticle {
};

template<typename T>
ExpressionParticle<T> Expression () ;

ExpressionParticle<int> ExpressionInt ();

int _tmain ( int argc, _TCHAR *argv[] )
{
    ExpressionParticle<int> (*p)();

    p = Expression<int>;

    Grammar() << "p";
    Grammar() << p;
    Grammar() << ExpressionInt;
    Grammar() << Expression<int>; // ***

是什么类型的Expression<int>如果不是上面p的类型呢?它的类型与ExpressionInt.


你的代码对我来说看起来不错,g++ 也很好。这似乎是 Visual Studio 中奇怪的重载解析错误。 VS2005好像也有同样的问题。一个可能的解决方法是(用VS2005测试):

template<class T>
T id(T t)  {return t; }
int main ()
{
    ExpressionParticle<int> (*p)();

    p = Expression<int>;

    Grammar() << "p";
    Grammar() << p;
    Grammar() << ExpressionInt;
    Grammar() << id(Expression<int>); // ***
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重载运算符<<以接受模板函数 的相关文章

  • 进程何时获得 SIGABRT(信号 6)?

    C 中进程获得 SIGABRT 的场景有哪些 该信号是否始终来自进程内部 或者该信号可以从一个进程发送到另一个进程吗 有没有办法识别哪个进程正在发送该信号 abort 向调用进程发送SIGABRT信号 就是这样abort 基本上有效 abo
  • asp.net 文本框文本模式数字,仅允许数字

    我只是想知道 ASP NET 中是否有一种方法只允许文本框中的数字textmode number 当我使用这个时
  • 我的线程图像生成应用程序如何将其数据传输到 GUI?

    Mandelbrot 生成器的缓慢多精度实现 线程化 使用 POSIX 线程 Gtk 图形用户界面 我有点失落了 这是我第一次尝试编写线程程序 我实际上并没有尝试转换它的单线程版本 只是尝试实现基本框架 到目前为止它是如何工作的简要描述 M
  • 为什么我不能用 `= delete;` 声明纯虚函数?

    Intro 纯虚函数使用通用语法声明 virtual f 0 然而 自 c 11 以来 有一种方法可以显式地传达non existence 特殊 成员函数的 Mystruct delete eg default constructor Q
  • 32 位应用程序的特征最大矩阵大小

    所以 我正在寻找Eigen http eigen tuxfamily org index php title Main Page当我尝试声明大于 10000x10000 的矩阵时 包崩溃 我需要声明一个像这样的矩阵 可靠地大约有 13000
  • 为什么要序列化对象需要 Serialized 属性

    根据我的理解 SerializedAttribute 不提供编译时检查 因为它都是在运行时完成的 如果是这样 那么为什么需要将类标记为可序列化呢 难道序列化器不能尝试序列化一个对象然后失败吗 这不就是它现在所做的吗 当某些东西被标记时 它会
  • 使用post方法将多个参数发送到asp.net core 3 mvc操作

    使用 http post 方法向 asp net mvc core 3 操作发送具有多个参数的 ajax 请求时存在问题 参数不绑定 在 dot net 框架 asp net web api 中存在类似的限制 但在 asp net mvc
  • 从多个类访问串行端口

    我正在尝试使用串行端口在 arduino 和 C 程序之间进行通信 我对 C 编程有点陌生 该程序有多种用户控制形式 每一个都需要访问串口来发送数据 我需要做的就是从每个类的主窗体中写入串行端口 我了解如何设置和写入串行端口 这是我的 Fo
  • 在 2D 中将一个点旋转另一个点

    我想知道当一个点相对于另一个点旋转一定角度时如何计算出新的坐标 我有一个块箭头 想要将其相对于箭头底部中间的点旋转角度 theta 这是允许我在两个屏幕控件之间绘制多边形所必需的 我无法使用和旋转图像 从我到目前为止所考虑的情况来看 使问题
  • 在非活动联合成员上使用“std::addressof”是否定义明确[重复]

    这个问题在这里已经有答案了 下面的代码是尝试实现constexpr的版本offsetof在 C 11 中 它可以在 gcc 7 2 0 和 clang 5 0 0 中编译 这取决于申请std addressof工会非活跃成员的成员 这是明确
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • 通过 NHibernate 进行查询,无需 N+1 - 包含示例

    我有一个 N 1 问题 我不知道如何解决它 可以在这个问题的底部找到完全可重复的样本 因此 如果您愿意 请创建数据库 设置 NUnit 测试和所有附带的类 并尝试在本地消除 N 1 这是我遇到的真实问题的匿名版本 众所周知 这段代码对于帮助
  • System.Runtime.InteropServices.COMException(0x80040154):[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 C 项目中遇到异常 System Runtime InteropServices COMException 0x80040154 检
  • 有没有一种简单的方法可以让 Visual Studio 2015 使用特定的 ToolsVersion?

    使用特定版本构建项目或解决方案时msbuild我可以使用以下命令选择早期的 net 工具链 toolsversion or tv switch C Program Files x86 MSBuild 14 0 bin msbuild tv
  • 是否可以有一个 out ParameterExpression?

    我想定义一个 Lambda 表达式out范围 有可能做到吗 下面是我尝试过的 C Net 4 0 控制台应用程序的代码片段 正如您在 procedure25 中看到的 我可以使用 lambda 表达式来定义具有输出参数的委托 但是 当我想使
  • strcmp 给出分段错误[重复]

    这个问题在这里已经有答案了 这是我的代码给出分段错误 include
  • 剪贴板在 .NET 3.5 和 4 中的行为有所不同,但为什么呢?

    我们最近将一个非常大的项目从 NET Framework 3 5 升级到 4 最初一切似乎都工作正常 但现在复制粘贴操作开始出现错误 我已经成功制作了一个小型的可复制应用程序 它显示了 NET 3 5 和 4 中的不同行为 我还找到了一种解
  • 什么是 __declspec 以及何时需要使用它?

    我见过这样的例子 declspec在我正在阅读的代码中 它是什么 我什么时候需要使用这个构造 这是 Microsoft 对 C 语言的特定扩展 它允许您使用存储类信息来赋予类型或函数属性 文档 declspec C https learn
  • 带重定向标准流的 C# + telnet 进程立即退出

    我正在尝试用 C 做一个 脚本化 telnet 项目 有点类似于Tcl期望 http expect nist gov 我需要为其启动 telnet 进程并重定向 和处理 其 stdin stdout 流 问题是 生成的 telnet 进程在
  • 匿名结构体作为返回类型

    下面的代码编译得很好VC 19 00 23506 http rextester com GMUP11493 标志 Wall WX Za 与VC 19 10 25109 0 标志 Wall WX Za permissive 这可以在以下位置检

随机推荐

  • Eclipse 调试 Android 不起作用

    大家好 我在调试 Android 应用程序时遇到 Eclipse 问题 我放置的所有断点都不起作用 应用程序不会停止 它们会因为未放置而被跳过 有办法让它们发挥作用吗 我有Win7 JDK 6u23 64位 Eclipse 3 6 64位
  • 计算MLLIB SVM多类概率

    我想知道如何在多类分类问题中使用 Spark MLLIB SVM 计算概率 文档显示没有这样的功能可用 LibSVM https stackoverflow com questions 7802556 regarding probabili
  • sql join 连接3个表

    这个有点奇怪 有人写了一条在我看来不应该工作的sql 但它确实有效 而且还返回了正确的结果 我写了一个简化的例子 但我认为它说明了要点 drop table client drop table transactions drop table
  • 这个 Urikind.relative 到底是什么意思

    我正在做的是 当我选择一行并单击显示按钮时 我将有一个 datagridview 我想显示图像以及我编写以下代码的一些信息 public partial class WpfWindow Window private UCPersons uc
  • Python:如果目录是符号链接,则 getcwd 和 pwd 给出不同的结果

    如果我的工作目录是符号链接 os getcwd and os system pwd 不给出相同的结果 我想用os path abspath 故意获取我的工作目录 或其中的文件 的完整路径 而不是得到与以下结果相同的结果os path rea
  • 通过 Cisco VPN 更新存储库时,Subversion 报告“格式错误的网络数据”

    我正在使用 Cisco VPN 在 Windows 7 Ultimate 64 位上 连接到我的公司网络 当我检查 svn 存储库时 下载一些文件后 2 或 3 秒我不断收到此错误 该问题发生在 TortoiseSVN 1 5 9 和 Sl
  • 在 Visual Studio 中使用命令行参数进行调试

    我正在 Visual Studio 中开发 C 命令行应用程序 需要使用命令行参数对其进行调试 目前我只是使用我需要的参数运行生成的 EXE 文件 像这样program exe file txt 但这样我就无法调试 有没有地方可以指定调试参
  • SQL 选择最大 BY 组

    WEEK STUDENT CLASS TEST SCORE 1 1 A 1 93 1 1 A 2 97 1 1 B 1 72 1 1 B 2 68 1 1 C 1 93 1 1 C 2 51 1 1 H 1 19 1 2 A 1 88 1
  • 根据分组属性添加新列

    我想在 R 中添加一个新列 将我的子组总结为组 这是我的例子 id c 1 2 2 3 4 4 4 5 5 5 6 6 6 subgroup c lightred lightblue darkblue lightred darkred da
  • 检测处理器的数量

    如何检测 net 中物理处理器 核心的数量 System Environment ProcessorCount 返回逻辑处理器的数量 http msdn microsoft com en us library system environm
  • Linux内核中slab内存管理的缓存着色

    我最近读到有关slab系统的缓存着色的内容 但不明白 为什么为不同slab中的对象添加不同偏移量的缓存着色可以提高性能 我最初的猜测是 具有缓存偏移量的slab分配器 尝试将slab的第一个对象放在不同缓存颜色的内存中 如果客户端从这些sl
  • 如何覆盖已经有 !important 的 CSS 背景?

    我试图用时尚覆盖网站的背景 但它不起作用 网站的背景 css 也有一个 important 并且它是压倒性的 我的代码 body background image none important background black import
  • 有没有办法在 grpc 服务器端设置超时?

    无法从服务器端使 grpc 连接超时 客户端可能建立连接但保持保持 睡眠状态 从而导致 grpc 服务器连接挂起 服务器端有没有办法在一定时间后断开连接或设置超时 我们尝试从客户端断开连接 但无法从服务器端执行此操作 在这个链接中gRPC
  • 如何强制命令行使用 PHP 版本?

    我由 1and1 com 托管 并且我已将我的文件设置为使用 php5 进行解析 htaccess 但这仅适用于 apache 而不适用于命令行 命令行默认为服务器默认 php4 所以目前我无法设置计划任务以 php5 运行我的代码 有任何
  • .htaccess - 递归地将斜杠映射到下划线

    G day 正如标题所示 我正在尝试将网址格式设置为 this is mah page strucutre到文件this is mah page structure php 现在 我已经可以工作了 只是我不知道结构的深度 因此我需要进行一些
  • Julia 中 @sync @async 的并行性

    我有一些繁重的 csv 表 我想与 sync sync 宏并行导入 对此不太熟悉 我尝试了以下方法 import files sync async begin df1 CSV File libname df1 csv gt DataFram
  • Javascript 中基于区域设置的排序,以预定义的方式对重音字母和其他变体进行排序

    在芬兰语中 我们排序W after V 如英语 但是因为W不是芬兰本土字母 它被认为是一个变体V 它被排序为等于V 但在两个词之间唯一的区别是V is W then V 版本首先排序 一个例子说明了正确的顺序 Vatanen Watanen
  • OWIN创业班

    有人可以告诉我 OWIN 启动类的确切作用吗 基本上我正在寻找什么 它的目的是什么 何时调用 仅调用一次或每次请求 这是配置我的依赖注入库的好地方吗 Owin 被设计为可插拔设计 您可以从配置中更改 替换一组服务 例如在以下配置中 我有 启
  • 如何在iPhone的phonegap应用程序中的javascript中读取sqlite3的数据

    我正在 iPhone 的phonegap 中开发一个应用程序 其中我有一个sqlite3 数据库 其中包含纬度和经度值以及相应的区域名称 我已在应用程序中复制了 sqlite 数据文件 我需要从sqlite中获取数据并将表中的数据显示在视图
  • 重载运算符<<以接受模板函数

    我试图能够使用函数编写可扩展语法 但似乎找不到接受模板函数的正确语法 我使用的是 Visual C 2008 它将接受与模板函数相同类型的变量或类似的非模板函数 但不接受模板函数本身 错误 1 错误 C2679 二进制 class Gram