在VS2012中,“明确默认和删除的特殊成员函数”功能(http://en.wikipedia.org/wiki/C++0x#Explicitly_defaulted_and_deleted_special_member_functionshttp://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm)尚不可用(http://msdn.microsoft.com/en-us/library/vstudio/hh567368.aspx)。即使非常冗长,也有使用这种功能的解决方法吗?
在实践中,我可以翻译一下吗

struct NonCopyable {
    NonCopyable() = default;
    NonCopyable(const NonCopyable&) = delete;
    NonCopyable & operator=(const NonCopyable&) = delete;
};

到具有相同功能但不使用defaultdelete的东西?如何?

最佳答案

没错,这些功能尚不可用。

但是,您可以这样做:

struct NonCopyable {
    // ...

private:
    NonCopyable(const NonCopyable&);
    NonCopyable & operator=(const NonCopyable&);
};

通过仅将复制构造函数和复制分配操作符(未定义)声明为私有(private),可以使它们不可用。因此,它就是您想要的效果。

一个很好的答案在这里:https://stackoverflow.com/a/2173764/1394283

10-04 10:17