【发布时间】:2016-01-29 14:18:13
【问题描述】:
考虑下面的sn-p:
struct A
{
auto foo(), bar();
};
auto A::foo() { return 1; }
auto A::bar() { return 'a'; }
int main()
{
}
它在 Clang++ 3.7.0 中编译得很好。
G++ 5.2.0 中的 fails:
main.cpp: In member function 'auto A::bar()':
main.cpp:7:24: error: inconsistent deduction for 'auto': 'int' and then 'char'
auto A::bar() { return 'a'; }
自动返回类型推导是否强制在单个语句中声明的多个函数具有相同的返回类型?
【问题讨论】:
-
MSVS 2015 也将在没有警告/错误的情况下编译。
-
只是好奇:有没有人提交过在 SO 上发现的那些编译器错误?
-
在你的情况下 (goo.gl/i09xpE) Clang 隐式地将 'a' 强制转换为 97。
-
这是我不愿在代码库中看到的那种代码。
-
@m.s.我不太关注 C/C++ 标签,但我已经看到了数十个报告错误报告的案例(而且很多时候也很快提供了修复)。
标签: c++ c++14 auto return-type-deduction