问题标签 [unspecified-behavior]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 传递给函数的值在调用内部加倍
我目前对正在制作的双向链表类的 get_set() 函数调用存在问题。该函数返回列表中从position_from到position_to的所有元素的向量。对于我发送的测试
dll_UT->get_set(dll_UT->size()/2+1, dll_UT->size()-1)
但是, dll_UT->size() 的值在调用中以某种方式加倍。在我的 COUT 语句之前直接调用时,它显示正确的值 100,但在函数内部时,它变为 200。我在下面留下了控制台日志以及 test.cpp 和 doubly_linked_list.cpp 的屏幕截图。
非常感谢您对此提供的任何帮助,因为我以前从未见过这种行为,并且想了解为什么会发生这种情况。
c++ - 是否有实现允许使用不受支持的类型实例化 std::complex 的原因
编辑说明:最初的问题是非法的,现在它说的是unspecified。
感谢最近 Jason Turner 视频的视频评论部分,我了解到这std::complex<int>
是未指定的。
但是所有(AFAIK)实现似乎都可以愉快地编译
但是有些函数,比如std::abs()
for 被破坏了std::complex<int>
,所以在那些主流实现中它实际上是不可用的。
我想知道为什么从未实施过对“坏”类型的检测是否有某种原因。我知道 std lib 实现需要与旧标准一起使用,因此它们不能只是将std::floating_point
概念卡在任何地方,但即使在 C++20 之前,我们也有办法约束模板。
换句话说:这只是“会很好,但我们没有时间”的问题,还是有一些兼容性原因来保持这个编译。我能想到的唯一一件事是,有些人正在使用 std::complex 和 std lib “制造商”不想明显破坏他们已经损坏的代码。