假设我想做一个无法构造的类型(不要问为什么)。
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
};
我想我可以对任何函数提出同样的问题,而不仅仅是构造函数。
我选择哪一个有什么区别吗?在语法方面,我想我喜欢第二种选择。但是是否有任何情况可以检测到差异(除了错误消息的文本)?