【发布时间】:2017-05-27 09:09:48
【问题描述】:
我想要做的可以总结为以下代码:
struct A{};
struct B{
A& a;
B(A& a) noexcept : a(a){}
int operator()(int) {}
};
int main(){
A a;
B(a)(2);
}
我的编译器(g++ 6) 拒绝了抱怨a 隐藏参数的代码。但是,如果我尝试显式调用 operator(),它会按预期工作。
g++ 似乎会忽略括号并将语句视为声明。
这是指定的还是预期的行为?
【问题讨论】:
-
做个天使,加入
int main();-) -
@Bathsheba,用
-S编译就可以得到结果了XD -
@YiFei 当然,但最好在您的问题中提供一个,这样我们就可以复制粘贴并测试您的代码。
-
@TartanLlama 那么好吧,把
f改写为main。谢谢你的建议。 -
@Bathsheba “高于我的工资等级”我不太确定..
标签: c++ compiler-errors g++ operator-keyword