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

Vah*_*agn 9 c++ std invoke constexpr c++17

应该不是的std ::调用constexpr特别是在C++中17 constexpr lambda表达式

是否有任何阻碍这种情况的障碍?

Vit*_*meo 13

更新: P1065将成功constexpr.


保留原始帖子的历史原因:

提案:

尽管有可能将标准符合调用函数模板实现为constexpr函数,但是所提出的措辞不需要这样的实现.主要原因是让它与现有的标准函数对象保持一致,它们可以有这样的定义,比如std :: mem_fn,std :: reference_wrapper和operator wrappers.此外强加此类要求将阻止引用std :: mem_fn的调用的实现.

该提案假定constexpr对标题的添加将由单独的提案一致地应用.

constexpr和基于标准库的实现都在提案的可实施性部分中介绍.


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