我的返回类型需要定义吗?

2024-06-23

前向声明 http://en.cppreference.com/w/cpp/language/class#Forward_declaration让我们推迟定义实际类型直到实现文件。对于前向声明类型的指针或引用,在标头中允许这样做。

有人告诉我 https://stackoverflow.com/questions/41964745/is-there-a-necessity-for-private-static-methods?noredirect=1#comment71111120_41964745 that:

按值返回不需要类型定义。前向声明就足够了

有人可以用标准的实际引用来确认或否认这一点吗?我的印象是这是不合法的。


按值返回不需要类型定义。前向声明就足够了

声明按值返回的函数不需要类型定义。一个格式良好的演示:

struct S;
S foo();
struct S {};
int main() {
    foo();
}
S foo() {
   return {};
}

定义或调用按值返回的函数确实需要类型定义。标准草案[基本.def.odr] http://eel.is/c++draft/basic.def.odr#5:

5 如果类的使用方式要求类类型完整,则翻译单元中只需要该类的一个定义。 [ 示例:... [片段] ... [ 注意:声明和表达式的规则描述了在哪些上下文中需要完整的类类型。类类型 T 必须是完整的,如果:

  • [snip]
  • 5.9 定义([basic.def])或调用([expr.call])返回类型或参数类型为 T 的函数,或
  • [snip]

由于列表中的任何规则都没有禁止,因此隐式允许声明具有不完整返回类型的函数。

该规则稍后在标准中重新措辞,并通过例外情况放宽[dcl.fct] http://eel.is/c++draft/dcl.fct#11(感谢@cpplearner指出了这个规则):

11 不得在返回类型或参数类型中定义类型。函数定义的参数类型或返回类型在函数定义的上下文中不应是不完整的(可能是 cv 限定的)类类型,除非该函数被删除 ([dcl.fct.def.delete])。


一个格式错误的演示:

struct S;
S foo() {
    return {};
} // oops
struct S {};

另一个格式不正确的演示:

struct S;
S foo();
int main() {
    foo(); // oops
}
struct S {};
S foo() {
    return {};
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我的返回类型需要定义吗? 的相关文章

  • 预加载整个模型以估计 Tensorflow Serving 的内存消耗

    当执行预测时 Tensorflow Serving 延迟初始化模型 DAG 中的节点 这使得很难估计保存整个模型所需的内存 RAM 是否有一种标准方法可以强制 Tensorflow Serving 将模型完全初始化 加载到内存中 您可以使用
  • 信用卡号应该存储为字符串还是整数?

    是啊 只是想想而已 我应该将在我的网站上输入的信用卡号存储为字符串还是整数 我的意思是 它们由数字组成 这让我认为它是一个整数 但我不对它们进行数学运算 所以也许字符串更合适 编辑 所以我必须在加密之前存储在某个时刻输入的数字 我可能应该更
  • 替换大字符串中的多个字符串的最快方法

    我正在寻找替换大 1mb 字符串的多个 500 子字符串的最快方法 无论我尝试过什么 String Replace 似乎都是最快的方法 我只关心最快的方式 不是代码的可读性 可维护性等 我不在乎是否需要使用不安全的代码或预处理原始字符串 每
  • 在 SelectSingleNode 中使用 XPath:从 XML 中检索单个元素(如果存在)

    我的 XML 看起来像
  • 共享库 C++ Makefile

    我需要编译胖二进制文件才能在另一台 Linux 机器上使用它 但缺少一些库 因此据我了解 我应该使用一些 shared 选项来编译它 但我不明白如何为此配置 Makefile 目前我的 makefile 如下所示 CC g CC FLAGS
  • 错误:调用 Configuration.BuildSessionFactory() 时“无法同时获取多个包”;

    升级到 NHibernate 2 1 后 我们收到此错误 QueryException Cannot simultaneously fetch multiple bags NHibernate Loader BasicLoader Post
  • 什么是合适的 NHibernate / Iesi.Collections.Generic.ISet 替代品?

    在最新版本的 Iesi Collections 中缺少 Iesi Collections Generic ISet 似乎有三种选择 链接哈希集 只读集 同步集 Iesi Collections Generic ReadOnlySet 似乎最
  • 处理可选依赖项 (C#)

    我们有一个可以选择与 TFS 集成的应用程序 但是由于集成是可选的 所以我显然不希望所有机器都需要 TFS 程序集作为要求 我应该怎么办 我是否可以在主程序集中引用 TFS 库 并确保在使用 TFS 集成时仅引用 TFS 相关对象 或者 更
  • 为什么 VS 2008 在 Intellisense 中不显示 String 类的扩展方法

    由于 String 实现了IEnumerable
  • C++ 中的结构填充

    如果我有一个struct在 C 中 有没有办法安全地将其读 写到跨平台 编译器兼容的文件中 因为如果我理解正确的话 每个编译器都会根据目标平台进行不同的 填充 不 那是不可能的 这是因为C 在二进制层面缺乏标准化 Don Box http
  • “#include ”导致“错误:asm/io.h:没有这样的文件或目录”

    我正在使用 gentoo 并尝试编译一个程序来控制并行端口上的位 它的顶部附近有这一行 include
  • 开始学习 C# 的最佳方式是什么?

    我对 vb 6 有一点编程经验 而 vb net 则不多 请告诉我成为专家 C 程序员的最佳方法 我知道这需要很长时间 想想你如何学习人类语言 阅读 写作 口语和听力 阅读代码 阅读文章 阅读示例 当您更有经验时 请查看您使用的一些项目的源
  • 在 Silverlight 中调用 WCF 服务时使用 Observable.FromEvent

    我正在尝试使用 NET Reactive Framework 来简化对我正在编写的 Silverlight 3 应用程序使用的 WCF 服务的一些异步调用 问题是我很难找到一种有效的方式来构建我的代码 毫无疑问 部分问题是了解 Reacti
  • 如何使用 SonarQube 的 C# 插件设置 FxCop 安装路径

    我正在尝试使用 SonarQube C 插件分析 NET C 项目 从C Plugin 3 0开始 即使sonar project properties中的 sonar fxcop mode skip FxCop也会自动执行 所以我将FxC
  • 使用二维动态数组编写一个类

    我有一个家庭作业 我并不是在寻找任何人为我做这项工作 我只是在一个小方面遇到了麻烦 尽管我也接受其他方面的建议 任务是 使用二维动态数组编写一个类 构造函数传入数组的维度 构造函数还将动态数组中的所有值初始化为行索引乘以列索引 交换二维数组
  • 传递给 WCF 服务的可选查询字符串参数

    我想知道如何使用 string limit WebOperationContext Current IncomingRequest UriTemplateMatch QueryParameters Limit 在我的wcf中这个方法 Cit
  • 我使用 difftime 的 c 函数有时会返回 65535

    我有一个函数 使用 difftime 来检测自通信心跳停止以来的时间 以秒为单位 该函数的运行速度可以达到每 50 毫秒一次 该函数似乎可以工作 除了偶尔返回 65535 之外 我可以将执行次数减少到每秒一次 因为 difftime 的返回
  • 在 Outlook 中检索当前电子邮件正文

    在我的 Outlook 插件中 我想在功能区上添加一个按钮 因此当用户单击此按钮时 我想检索当前选定的电子邮件的正文 我有此代码 但它只检索收件箱中的第一封电子邮件 因为索引为 1 Microsoft Office Interop Outl
  • 用于 DSP 的快速 2D 卷积

    我想实现一些图像处理算法 这些算法旨在运行在小猎犬板 http en wikipedia org wiki Beagle Board 这些算法广泛使用卷积 我正在尝试为 2D 卷积找到一个好的 C 实现 可能使用快速傅里叶变换 我还希望该算
  • 在 Angular 6 和 ASP.net 中启用 CORS

    我正在尝试从 Angular 6 应用程序向发送电子邮件的 API 发送 POST 请求 我用邮递员测试了该请求并且它有效 但是当我在 Angular 应用程序中执行 POST 请求时 我的控制台中出现错误 我在 Angular 应用程序中

随机推荐

  • 使用自动布局指定 UICollectionView 中单元格的一维

    在 iOS 8 中UICollectionViewFlowLayout支持根据单元格自身的内容大小自动调整单元格大小 这会根据单元格的内容调整单元格的宽度和高度 是否可以为所有单元格的宽度 或高度 指定固定值并允许调整其他尺寸的大小 举一个
  • Python 找不到 Brownie 文件

    我正在关注 Solidity 和 Python 教程 仅供参考 我正处于已安装 Python 和 Brownie 并通过 VSCode 运行的阶段 但在询问 Brownie 的版本时收到以下通知 brownie version INFO C
  • 如何迁移到新的 SwiftUI 应用协议?

    我正在开发一个 SwiftUI 应用程序 该应用程序仍然具有场景 应用程序委托文件 并希望将其迁移到新的 SwiftUI 应用程序协议 这只是删除场景 应用程序委托文件 然后将我的 ContentView 在我的例子中为初始视图 添加到 m
  • 如何在 Visual Studio Code 中调试之前自动运行构建任务?

    在 VS Code 中 我必须先运行构建任务 然后开始调试 而在 CLion 中 我只需单击 调试 然后它会在必要时自动构建并开始调试 有没有办法在 VS Code 中自动执行此操作 将构建任务添加到 Launch Json 您正在寻找的可
  • C# 到 Java TripleDES ,不同的结果

    我正在尝试将此 C 加密算法转换为 Java 但是 我不断检索略有不同的加密结果 尚未尝试解密 还需要指出的是 我无法更改 C 代码 但是 当我在 C 中对字符串 test 调用加密函数时 它将返回nmj8MjjO52y928Syqf0J
  • 使用 angular2 将图像上传到 asp.net core

    所以我有 Angular2 的 ASP NET Core 应用程序 现在我想上传图像 如果我将其上传为 byte 我就成功了 但后来我无法检查文件是否真的是后端的图像 所以我尝试寻找其他解决方案 我发现了这个关于文件上传的博客 https
  • 如何将一个整数拆分为一个数字列表?

    假设我有一个输入整数12345 我怎样才能把它分成一个列表 比如 1 2 3 4 5 将数字转换为字符串 https docs python org 3 library functions html func str这样你就可以迭代它 然后
  • DispatcherTimer Stop 不停止

    更新 我把完整的代码放出来供参考 我正在尝试使用 Dispatcher 方法而不是 Forms Timer 我在方法结束时停止了 但在停止之前它一直循环多次 什么地方出了错 顺便说一句 我必须提到我确实在计时器 if 语句中使用了 Mess
  • 如何清除android中的微调器值

    当我在第一个微调器中选择项目 第一个项目除外 时 我有两个微调器 该微调器保存在数组中 它会填充来自网络服务的第二个微调器中的数据 我希望当我再次选择第一个数据 即微调器的标题 时 它应该清除第二个微调器中的所有值 我使尽了一切招数却束手无
  • 问号和点运算符是什么?在 C# 6.0 中是什么意思?

    在 VS2015 预览版中的 C 6 0 中 我们有一个新的运算符 可以这样使用 public class A string PropertyOfA get set var a new A var foo bar if a Property
  • Android:上传图像而不丢失Exif数据

    在我们的应用程序中 用户多年来一直使用 大致 以下代码上传数百万张图像 BitmapFactory Options bmOptions new BitmapFactory Options bmOptions inJustDecodeBoun
  • 组合框 ext 4.0 中的动态滚动

    我正在使用 extjs 4 0 并有一个带有 queryMode remote 的组合框 我用服务器的数据填充它 问题是来自服务器的记录数量太大 所以我认为最好分部分加载它们 我知道组合框有一个标准的分页器工具 但它并不方便 因为需要总记录
  • WebAuthn - “凭证公钥”的字节长度

    In WebAuthn the authenticator data contains the variable length attested credential data followed by the extensions if a
  • Python 类型错误:“List”对象不可调用

    我在使用 Python27 的这段小代码内容时遇到此错误 谁能帮我这个 提前致谢 运行时错误回溯 最近一次调用最后一次 文件 5eb4481881d51d6ece1c375c80f5e509 py 第 57 行 在 print len ar
  • 在Matlab中,是否可以终止脚本,但将其所有内部变量保存到工作区?

    我正在运行一个脚本 但它花费的时间太长 所以我想终止该脚本 然而 它计算了很多数据 我理想情况下不想扔掉这些数据 有没有替代方案ctrl C用什么将内部函数变量保存到工作区 理想情况下我正在寻找一个Matlab键盘快捷键如ctrl C 但如
  • 单调性和启发式的可接受性之间有什么区别?

    我正在阅读我的人工智能教科书 我很好奇启发式的单调性和可接受性之间有什么区别 我知道它们并不相互排斥 据我所知 可接受的启发式方法仅仅意味着您可以确保获得解决方案的最短路径 如果存在 我正在努力解决的是单调属性的概念 有人可以用我可以理解的
  • 在 wxWidgets 中将控制台与 GUI 连接起来

    我正在编写一个 wxWidgets GUI 应用程序 但它也使用一些控制台对象 我需要一种显示标准输出和访问标准输入的方法 最好的方法是显示控制台和 GUI 如果用户从命令提示符 shell 等运行程序 但在应用程序运行时命令提示符不会自动
  • 如何使用自定义设置器来检查参数的有效性?

    我是 Kotlin 新手 无法解决一个极其基本的问题 我想要一个自定义设置器并检查参数值是否有效 如果无效则抛出异常 My code class Test var presni Int 1 set value if value lt 0 t
  • 使用 Enum 作为参数的 Hibernate 查询

    我没有运气让休眠 使用 HSQLDB 查询工作 查询代码如下 Query query session createQuery from tableName where CURRENCY currency query setParameter
  • 我的返回类型需要定义吗?

    前向声明 http en cppreference com w cpp language class Forward declaration让我们推迟定义实际类型直到实现文件 对于前向声明类型的指针或引用 在标头中允许这样做 有人告诉我 h