Igo*_* R. 3 c++ gcc language-lawyer type-deduction c++14
在以下代码中, GCC未能编译(1)(无法推断F),但成功编译(2)。这里的关键是bar模板的推导返回类型,否则GCC不会失败。
但是,Clang会编译整个代码而不会出错。
在这种情况下,(1)和(2)之间除了作为b函数指针之外,还有什么本质区别?这是GCC中的错误,还是这里有些格式错误?
template<class>
auto bar() {
return 0;
}
template<class F>
void foo(F&&) {
}
int main () {
foo(bar<int>); // (1)
auto b = bar<int>;
foo(b); // (2)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |