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

在Xcode中用C++11编译含auto返回值代码报错的原因排查

关于C++ auto返回类型编译错误的解答

你混淆了C11和C14中auto的不同用法:

  • C11里的auto仅支持变量的类型推导,不能直接用来推导函数返回类型——如果要在C11中实现函数返回类型推导,必须配合尾随返回类型-> decltype(...)。
  • 你写的auto &GetString() const { return m_str1; }这种直接用auto作为函数返回类型、不写尾随返回类型的写法,是C++14才新增的自动返回类型推导特性,这就是Xcode报错的核心原因。

如果要兼容C++11,代码需要改成带尾随返回类型的写法:

class Foo
{
public:
    auto& GetString() const -> decltype(m_str1) { return m_str1; }
private:
    std::wstring m_str1;
};

另外也可以直接在Xcode的项目设置中,把C语言标准切换到C14或更高版本(比如C++17),原代码就能正常编译。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:01:02