如何通过对基本数据类型的操作来构造表达模板?

问题描述

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

原因是因为带有co_await的运算符operator+似乎未排序(导致生成器/生成任务的结果不正确)。参见此处C++20 Coroutines,Unexpected reordering of await_resume,return_value and yield_value

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

如果不可能使原始类型的全局运算符重载,那么有人对如何将表达式模板注入现有的基于运算符的数学代码没有任何想法。


正在进行的研究


操作员需要至少一种类类型才能进行重载:

why C++ operator overloading requires "having at least one parameter of class type"?

因此,我无法针对基本数据类型执行此操作。 因此,它把这个问题的焦点转移到了将基本数据类型表达式转换成表达式模板的其他方法上。


根据下面彼得的评论。 由于operator+(a,b)的参数是未排序的,因此该方法无效:(


解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)