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

C++函数能否省略显式类型实例化,用空初始化列表返回?

能否用return {}简化复杂返回类型的返回语句?

完全可以用return {}替代显式构造返回对象的写法,这在C++11及以后的标准中是合法且语义等价的。

具体到你的代码场景

在这个分支里:

if (type == DataType::Invalid) {
    return std::vector<std::map<int, std::string>>(); // 显式构造
    return {}; // 完全可以这么写
}

return {}会让编译器根据函数的返回类型std::vector<std::map<int, std::string>>,自动调用该类型的默认构造函数,生成一个空对象返回,效果和显式构造完全一致。

原理说明

C++11引入的列表初始化规则中,当return语句后跟空初始化列表{}时,编译器会匹配返回类型的默认构造(只要该类型支持默认构造)。对于std::vector、std::map这类标准库容器来说,它们都提供了默认构造函数,所以这种写法完全安全。

对比其他写法

你提到的先定义返回对象再填充的写法:

std::vector<std::map<int, std::string>> ret;
// 填充逻辑
return ret;

这种写法本身没有问题,但在需要返回空对象的分支里,return {}更简洁,避免重复书写冗长的嵌套类型名,可读性和维护性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:30:12