假设我想做一个无法构造的类型(不要问为什么)。
struct Impossible
{
我可以这样做:
    Impossible() = delete;
    // disable automatically generated constructors, don't declare any others
    Impossible(const Impossible&) = delete;
    // I suppose this is redundant with nothing to copy
或像这样:
    Impossible(...) = delete;
    // explicitly disable all constructors
或像这样:
    template<typename... Ts>
    Impossible(Ts...) = delete;
    // explicitly disable all constructors, template version
};
我想我可以对任何函数提出同样的问题,而不仅仅是构造函数。
我选择哪一个有什么区别吗?在语法方面,我想我喜欢第二种选择。但是是否有任何情况可以检测到差异(除了错误消息的文本)?