You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何C++函数返回类型中不允许进行模板实参推导?

为什么类模板实参推导不能用于函数返回类型?

最直接的回答或许是——因为标准如此规定。这无可厚非,但我仍想深入探究这一规定背后的原因。

先看这段编译失败的代码:

template<typename T> struct S { S(T) {} }; S f() { return 0; } int main() { auto s = f(); (void)s; }

它的报错信息是:

error: use of class template 'S' requires template arguments; argument deduction not allowed in function return type

修复起来其实很简单,改成下面这样就能正常编译了:

auto f() { return S{0}; }

不过我一直好奇,允许类模板实参推导应用于函数返回类型会有哪些弊端?乍看这只是个没道理的限制,但我肯定漏掉了关键的考量点。


内容的提问来源于stack exchange,提问作者skypjack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:38:11