当前位置: 首页 > 知识库问答 >
问题:

使用运算符语法但不使用函数语法的错误消息

张宝
2023-03-14

为什么使用运算符语法调用一元时会收到错误消息?如果我使用函数语法调用它,则可以。实时演示。

template <int size>
struct Buffer { char buf[size]; };

template <class T>
struct Wrapper { void operator+() {} };

Wrapper<Buffer<-5>> a;

void f1() { +a; }               // error: Buffer<-5>::buf has negative size
void f2() { a.operator+(); }    // OK

共有1个答案

刘骏祥
2023-03-14

非限定查找调用ADL,ADL需要知道关联类中是否定义了任何友元函数<代码>缓冲区

例如,让我们将< code>Buffer放入< code >命名空间N中,将< code>operator 放入< code>Buffer中。如果< code>a的类型是< code >包装

template <class T>
struct Wrapper {};

namespace N {
    template <int size>
    struct Buffer {
        template <class T> friend void operator+(const Wrapper<T>&) {}
        char buf[size];
    };
}

Wrapper<N::Buffer<5>> a;

void f1() { return +a; }
 类似资料:
  • 问题内容: 我正在使用Python并使用MySQLdb模块。我的连接正常(我可以成功运行其他查询) 我收到以下错误: 我以前也遇到过类似的麻烦;MySQLdb的语法错误消息 非常 难以描述。 如何解决? 问题答案: 我相信是保留的。在子句中使用 如果对它放回去,您也许可以摆脱使用它的困扰,但是我认为将名称更改为非保留字会更好。

  • 在下面的查询中,我使用了strftime函数来获取字符串格式的日期。它在sqlite数据库中运行良好。但是,当数据库更改为进程时,它抛出了一个错误,即“SQLSTATE[42883]:未定义函数:7错误:函数strftime(未知,没有时区的时间戳)不存在” 下面的代码在SQLite中工作,但在Postgres数据库中引发了一个错误

  • 我正在尝试使用java和jdbc按时间戳在sql中搜索表,但是当我将时间戳插入查询字符串时,我在小时图处得到一个sytax错误: 错误是这样的: com . Microsoft . SQL server . JDBC . SQL server异常:“10”附近的语法不正确。在com.microsoft.sqlserver.jdbc . SQL server exception . makefrom

  • 我的语句似乎抛出了语法错误。我已经阅读了语句应该如何编写(以及脚本中的其他语句没有问题),因此我不确定为什么会有问题。 <代码>

  • 我不明白为什么这个delete语句会出现语法错误: 错误: Msg 156,级别15,状态1,第18行关键字“left”附近语法不正确。

  • 本文向大家介绍Swift语言运算符是函数,包括了Swift语言运算符是函数的使用技巧和注意事项,需要的朋友参考一下 示例 运营商如+,-,??是一种功能使用的符号,而不是字母命名。它们与函数的调用方式不同: 字首:  -x 中缀: x + y 后缀: x++ 您可以在The Swift Programming Language中阅读有关基本运算符和高级运算符的更多信息。