小编Amo*_*thm的帖子

返回可变参数包的添加

假设我有一个sum带有可变参数包的函数。
该函数需要使用运算符 ADD UP 参数包中的所有参数+。

注意:它不能以任何方式使用运算符+=,并且只能使用运算符+(因为程序不能假设所有参数都已operator+=重载)。

然后,函数sum需要返回整个“总和”或累加。

这是它的基本结构:

template <class... Args>
auto sum(Args... args)
{
    // ... The code
}
Run Code Online (Sandbox Code Playgroud)

注意:所有参数可能不是同一类型,并且您可以假设operator+参数包的所有类型都存在相应的重载。

了解我正在使用 C++ 20 可能会有所帮助。

c++ sum variadic-templates parameter-pack

6
推荐指数
1
解决办法
114
查看次数

C++ 求值顺序和可能的结果

考虑以下代码:

#include <iostream>

int main()
{
    int i = 0;
    std::cout << ++i << ' ' << --i << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

Nicolai Josuttis 在他的《C++17 完整指南》一书中写道,在C++17之前,这个特定的示例可能会产生不可预测的结果。和1 0都0 1可能被产生,但更重要的0 0是还有可能的输出。我不明白为什么第三个序列应该被考虑为可能的。应该在评估第二个值之前评估++ior ,根据定义,第二个值不能产生两个零,不是吗?--i

c++ pre-increment

1
推荐指数
1
解决办法
66
查看次数