例如,假设我有一个函数交换,如下所示:
class A {
// all member variables and member functions are defined.
// Given that A deleted both copy constructor and
// overloaded assignment operator for some trivial reasons
A(const A&) = delete;
A& operator=(const A &) = delete;
};
template<typename T>
void swap (T &a, T &b) {
T temp;
temp = a;
a = b;
b = temp;
}
Run Code Online (Sandbox Code Playgroud)
现在我想swap()
处理除类型 A 的对象之外的所有类型,这是因为我有一些微不足道的原因,导致 A 没有实现重载赋值运算符或复制构造函数。
对于这种情况,我们可以编写一些断言或异常处理,以便当 swap()
函数用于类型 A 的对象时我们应该得到一个错误。
如果我们可以在编译时和运行时都做到这一点,请说明两者,这将帮助我了解更多。
c++ ×1