0

我正在尝试从数学运算构建表达式模板,以便正确排序未排序的运算(例如 opertor+)。

原因是运算符co_awaitwithoperator+似乎没有排序(导致生成器/生成任务的结果不正确)。请参阅此处C++20 协程,await_resume、return_value 和 yield_value 的意外重新排序

如果我可以在原始数据类型上使用表达式模板,我可以使用表达式模板手动排序执行。这主要是一个练习,以确定它是否可能(而不是它是否是一个好主意)来确定是否存在解决该问题的可能解决方法。

如果不可能为原始类型重载全局运算符,那么是否有人知道如何将表达式模板注入现有的基于运算符的数学代码中。


正在进行的研究


运算符需要至少 1 个类类型才能重载:

为什么 C++ 运算符重载需要“具有至少一个类类型参数”?

所以,我不能为基本数据类型做这件事。因此,它将这个问题的重点转变为其他将基本数据类型表达式转换为表达式模板的方法。


根据彼得的以下评论。由于 的参数operator+(a,b)是未排序的,这种方法将不起作用:(


4

0 回答 0