【问题标题】:Is "std::is_callable" replaced with "std::is_invocable" in C++17?在 C++17 中,“std::is_callable”是否替换为“std::is_invocable”?
【发布时间】:2017-03-26 06:09:33
【问题描述】:

cppref 删除了std::is_callable 的入口页面,并改用std::is_invocable 入口页面。

但是,std::is_callable 在 Visual Studio 2017 中仍然可用。

std::is_callable 在 C++17 中是否正式 [replaced|deprecated|removed] 为 std::is_invocable

【问题讨论】:

  • 好像是这样,yes
  • Visual Studio 2017 v15.3 将 std::is_callable 重命名为 std::is_invocable

标签: c++ standards language-design c++17 typetraits


【解决方案1】:

是的,is_callable 已重命名为 is_invocable,如 p0604r0 中所述。该文件包括此决定的理由:

is_callable 重命名为is_invocable is_callable 是最自然的特征名称,它回答了函数调用表达式是否有效的问题,这是一个严格的表达式的子集,INVOKE 支持,而且改名is_invocable 更清楚地表达了它的含义。释放名称 is_callable 允许我们在未来引入纯 is_callable 特征。

【讨论】:

  • 链接好像坏了。
  • @isanae Ks 是语言规范的创造者。
  • @isanae - 好吧,invokable 不是英文单词,但 invocable 是。
  • @isanae 因为它是 protectedclass 而不是 prouetektedklasse 因为很多人使用英语,一个字母的差异只会让人烦恼
  • @isanae 什么不是英语? Invocableinvoke的形容词形式,语言中没有invokable这样的词。所以is_invocable确实意味着你可以invoke吗?
猜你喜欢
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
  • 2019-06-13
  • 2020-06-11
  • 2021-10-26
  • 1970-01-01
  • 1970-01-01
  • 2020-12-14
相关资源
最近更新 更多