以下代码编译:
auto foo(int i) {
if( i == 1 )
return i;
else
return foo(i-1)+i ;
}
Run Code Online (Sandbox Code Playgroud)
auto foo(int i) {
return (i == 1) ? i : foo(i-1)+i ;
}
Run Code Online (Sandbox Code Playgroud)
为什么编译器不能在第二种情况下推断出返回类型?我在这里错过了一些东西吗?
我知道(i == 1)在第二种情况下有一个序列点,但这不应该影响编译,对吧?