【问题标题】:Why doesn't void{} exist?为什么 void{} 不存在?
【发布时间】:2018-04-09 07:39:17
【问题描述】:

我想知道为什么void()void 的prvalue 但void{} 不存在...?请参阅以下答案:https://stackoverflow.com/a/37708167/293195

例如在上下文中:

template<typename R>
R foo(){
 return R{};
}

【问题讨论】:

  • Obligatory。在这里的答案中很难知道你在寻找什么。因为P0146 没有被批准?或者因为当添加了大括号初始化时,没有人考虑过void... 或者从那以后在乎。还是……?
  • @Barry:有大量语言设计的“为什么”问题可以客观地正确回答。当有人提出问题时,他们不知道答案会是“天知道为什么”,或者“这是因为”。只是一个例子,这是一个“为什么”的问题,有一个正确的答案:stackoverflow.com/questions/8911696/if-condition-with-nullable。由撰写“强制性”答案的同一个人撰写。甚至,“天知道为什么”比不回答更好。这样,至少,我们知道,某事没有特别的原因(所以这不是设计决定)。
  • @geza 您是否建议这是可以以客观方式正确回答的语言设计“为什么”问题之一?如果您不建议这样做,那么我不明白评论的重点。我只是说我不知道​​如何回答这个问题,因为我不相信有一个有意义的、客观的答案。
  • @Barry:好吧,也许我误解了你的意图。

标签: c++ c++17


【解决方案1】:

CWG 2351,6 月解决,使void{} 合法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多