小编DIV*_*ANI的帖子

模板参数如何解析/推导?

在学习和试验模板时,我遇到了一些我无法完全掌握的东西.

class sample
{
    public:
        sample(int a = 0) {}
};

template <typename T1,typename T2>
void add(T1 a) // Replace T1 with T2 resolves compilation error.
{}

int main()
{
    add<sample>(3); 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码导致编译错误(03和c ++ 0x).但是当我将添加的参数类型从T1更改为T2时,它就可以了.对于nm,创建的原型是add(sample,int)[T1 = sample,T2 = int].为什么编译失败,T1作为参数类型而不是T2?

c++

6
推荐指数
1
解决办法
95
查看次数

我如何猜测可能在C++中抛出的所有异常?

我包括第三方头文件.它具有可能/可能不会抛出异常的函数.在我的源代码中,如何确定可能从该文件中抛出哪些异常?这是一个面试问题.我的回复是通过函数声明并查找异常规范.这可能会给我们一些暗示.有没有其他方法可以预测可能抛出的异常?

c++

5
推荐指数
1
解决办法
71
查看次数

std :: ref和swap函数似乎不能很好地协同工作

template <typename T>
void myswap(T a,T b)
{
    T temp = a;
    a = b;
    b = temp;
}
int main()
{
  int m(20),n(30); 
  myswap(ref(m),ref(n));
  //m is still 20 and n is still 30
}
Run Code Online (Sandbox Code Playgroud)

为什么m和n的值没有互换?传递包含在std::refINCREMENT函数中的值会导致原始变量(调用INCREMENT函数的堆栈帧中的变量)中的值更改.或者,std::ref使用受限制/限制?

c++ c++11

5
推荐指数
1
解决办法
231
查看次数

标签 统计

c++ ×3

c++11 ×1