小编K.R*_*ark的帖子

模板元编程是否完全可以在 C++20 中替代?

constexpr尽管模板元编程的想法(尽可能在编译时计算某些内容)非常棒,但我想知道当前的 C++20 功能是否允许我们通过使用、constevalif constexprconcept和其他 C++20 功能来完全避免 TMP 。这是真的?或者 TMP 提供的某些功能无法替代?

c++ templates template-meta-programming c++20

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

C++ 协程 - 何时、如何使用?

作为一名对协程概念非常陌生的 C++ 程序员新手,我正在尝试研究和利用该功能。虽然这里有协程的解释:What is a coroutine?

我还不确定何时以及如何使用协程。提供了几个示例用例,但这些用例具有可以通过 C++20 之前的功能实现的替代解决方案:(例如:无限序列的惰性计算可以通过具有私有内部状态变量的类来完成)。

因此,我正在寻找协程特别有用的任何用例。

协程概念

(来自Izana发布的图片)

c++ coroutine c++20 c++-coroutine

11
推荐指数
1
解决办法
2万
查看次数

为什么显式弃用 register 存储类

考虑到数值计算,在我看来,寄存器存储类(目前已弃用并从标准中删除)是一个很好的优化提示。是否有任何具体原因将其从标准中明确删除?

c++ standards

4
推荐指数
2
解决办法
97
查看次数

单继承类的指针转换偏移量

在学习《Effective C++》时,我首先感到惊讶的是,如果一个类具有多重继承,那么当指针转换完成时,它的指针可能会发生偏移。虽然这不是一个容易掌握的概念,但我想我已经掌握了。

然而,作者声称即使在单继承类的指针转换中也可能发生这种偏移。我想知道这种情况是什么,并希望知道其背后的原理。

c++ polymorphism pointers casting language-lawyer

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

如何限制我的模板仅接受具有特定输入和输出类型的 lambda?

受到计算函数泰勒级数的其他问题(原始问题)的启发,我编写了一个没有任何约束的模板来成功计算总和。这是当前代码(模板主体已删除,正如 @Elliott 所说,这与要点无关..):

#include <iostream>
#include <cmath>
#include <limits>

template<typename ftn>
long double Taylor_sum(ftn terms_to_sum) { /* Summation calculation goes here... */ return result; };

int main(){
    using namespace std; long double x;  cin >> x ;
    long double series_sum = Taylor_sum([x](unsigned long long int i) -> long double { return /*Taylor term here*/; });
    if (!isfinite(series_sum)) cout << "Series does not converge!" << endl;
    else {
        cout << "Series converged, its value is : " << series_sum …
Run Code Online (Sandbox Code Playgroud)

c++ generics templates c++-concepts c++20

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