template<typename T> auto foo(T t) -> decltype(t.begin(), void()) { // overload 1 } template<typename T> void foo(T t) { // overload 2 } int main() { foo(42); }
编译错误:两个foo重载冲突
调用overload 2,SFINAE使overload 1被排除
调用overload 1
编译错误:decltype表达式非法
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题