为什么`std::invoke`不是constexpr?

10
1个回答

14

更新: P1065 会使它成为 constexpr


为了历史原因保留原帖:

根据提案

尽管实现标准符合的 invoke 函数模板作为 constexpr 函数的可能性存在,但建议并未要求这样的实现。主要原因是让它与现有的标准函数对象保持一致,如 std::mem_fn、std::reference_wrapper 和操作符包装器等都可能具有此定义。此外,强制实施这种要求将会阻止引用 std::mem_fn 的 invoke 实现。

该提案假设通过单独的提案对头文件添加 constexpr 功能进行一致性应用。

在“可实现性”部分中介绍了 constexpr 和基于标准库的两种实现方式。


相关 CWG 问题 #1581:何时定义 constexpr 成员函数?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接