首页 > 解决方案 > 如果我故意不从非 void 函数返回会发生什么?

问题描述

我正在尝试使用允许我对不同类型的对象执行操作的表达式模板编写代码,并且我正在尝试自定义该行为。为此,如果我可以编写一个函数,例如:

double ReturnVal() {};

此代码产生编译器警告“函数返回非 void 中没有返回语句”。但是-该功能似乎可以满足我的要求。具体来说,如果我运行:

double x = 5;
x = ReturnVal();

我发现 x 仍然是 5。函数 ReturnVal() 没有改变它。这就是我希望代码执行的操作。

我知道这看起来很奇怪,但同样,这很有用,因为我正在尝试使用模板编写代码,并自定义操作符在类似(但不同)类型对象上操作时的行为。

所以,问题是——我可以依赖这种“x = ReturnVal()”不会改变 x 的行为吗?这就是我想要的,这就是我在测试中看到 gcc 所做的。但我很紧张,这可能是未定义的行为,我不能依赖它。

标签: c++templatesreturnundefined-behavior

解决方案


推荐阅读