小编Raj*_*thu的帖子

C++ 模板编程中有没有一种方法可以抛出特定类型的编译时错误?

例如,假设我有一个函数交换,如下所示:

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++

3
推荐指数
1
解决办法
188
查看次数

标签 统计

c++ ×1