【发布时间】:2011-02-21 22:50:06
【问题描述】:
工作草案明确指出defaulted-functions 必须是特殊的成员函数(例如copy-constructor、default-constructor 等(第8.4.2.1-1 节))。这很有意义。
但是,我没有看到对 deleted-functions(第 8.4.3 节)的任何此类限制。对吗?
或者换句话说,这三个示例是否有效c++0?
struct Foo
{
// 1
int bar( int ) = delete;
};
// 2
int baz( int ) = delete;
template< typename T >
int boo( T t );
// 3
template<>
int boo<int>(int t) = delete;
【问题讨论】:
-
什么是删除函数?
-
被删除的函数是指如果它没有被删除就已经存在的函数。例如。您可以删除类复制ctor。出于两个原因,这比使其私有未实现要好一些。 1.阅读代码时更明显 2.可以得到更清晰的错误信息。
-
@MSalters:您还可以删除不存在的函数,阻止它们的使用。例如。给定
void f(double); void f(int) = delete;,f(42) 现在是一个错误,而不是使用隐式转换。
标签: c++ c++11 deleted-functions