删除std :: future和std :: promise的void特化

Cur*_*ous 6 c++ future c++11 c++14 c++17

关于描述删除std :: future和std :: promise P0241R0的void 特化的论文.这可能是一个愚蠢的问题,但建议的解决方案是完全删除void专门化,但是当他们想要实例化一个std::future<void>对象时,人们期望做什么?

Die*_*Epp 5

如参考文献中所述,如果void是常规类型,这将是可能的.

void get_value() {
    void x;
    return x;
}
Run Code Online (Sandbox Code Playgroud)

这是它在其他一些语言中的工作方式,因此它并非没有先例.在其他语言中,它被称为"单位"类型,因为它只有一个可能的值.(其他语言也有"null"类型,它没有可能的值,所以如果你尝试创建一个,你会得到一个错误.它被命名为"null",但它与空指针无关.)

  • 直接回答"人们应该做什么"的问题 - 他们没有什么不同.`future <void>`不会消失,它只是不需要专业化. (4认同)