c++ - 是否有统一函数类型限定符和简化可恶函数类型的建议?
问题描述
在处理基于函数类型匹配的模板时,可恶的函数类型组合可能是一个真正的痛苦(参见std :: is_function)。
其他限定符,包括 const、volatile、&、&&、noexcept(加上可变参数支持)可能会导致大量模板特化。
但是,说明noexcept
符允许使用布尔表达式noexcept(expr)
:
noexcept
相当于noexcept(true)
默认
所以,在未来,我们可以想象用这个模型统一所有的限定词:
const
限定符将等同于const(true)
volatile
限定符将等同于volatile(true)
&
限定符将等同于&(true)
&&
限定符将等同于&&(true)
而且,锦上添花,使限定词可扣除,以便能够编写如下内容:
template <typename Fn>
struct function_traits;
template <typename R, bool CQ, bool VQ, bool LVRQ, bool RVRQ, bool NEQ, ARGS... Args>
struct function_traits<R(Args...) const(CQ) volatile(VQ) &(LVRQ) &&(RVRQ) noexcept(NEQ)>
{
static constexpr bool is_const_qualified = CQ;
static constexpr bool is_volatile_qualified = VQ;
static constexpr bool is_lvalue_ref_qualified = LVRQ;
...
};
我想听听有关此类问题的任何想法。
解决方案
推荐阅读
- import - SAS 循环并导入每个文件。结合两组代码
- python - 为什么 struct.pack 会抛出一个似乎没有类型的异常?
- javascript - 有没有办法在我的代码中提高性能?
- c# - WPF - 一种颜色的奇怪行为绑定问题
- google-apps-script - 如何将 OnEdit(e) 限制在一个范围内?
- php - 分别获取某些表单输入
- c++ - 在 push_back 中调用递归函数
- python - 如何使用 `np.where()` 比较数组而不是单个值
- excel - 如何在 Excel VBA 中保存和转置范围
- angular - 如何在 Angular Reactive Form 的 FormBuilder 中预设一个复选框并基于该复选框启用/禁用按钮