在VS2012中,“明确默认和删除的特殊成员函数”功能(http://en.wikipedia.org/wiki/C++0x#Explicitly_defaulted_and_deleted_special_member_functions,http://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;
};
到具有相同功能但不使用
default
和delete
的东西?如何? 最佳答案
没错,这些功能尚不可用。
但是,您可以这样做:
struct NonCopyable {
// ...
private:
NonCopyable(const NonCopyable&);
NonCopyable & operator=(const NonCopyable&);
};
通过仅将复制构造函数和复制分配操作符(未定义)声明为私有(private),可以使它们不可用。因此,它就是您想要的效果。
一个很好的答案在这里:https://stackoverflow.com/a/2173764/1394283