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

时间:2016-10-24 16:14:57

标签: c++ std invoke constexpr c++17

std::invoke之后constexpr lambdas in C++17不应该http.requesst() {/ 1}}

是否有任何阻碍此事的障碍?

1 个答案:

答案 0 :(得分:11)

更新: P1065会将其设为constexpr

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

来自the proposal

  

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

的调用的实现      

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

     

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

相关CWG问题#1581:When are constexpr member functions defined?