2
私が持っている2テンプレート関数と、このプログラム:assign(a,a+b)
コール2番目のテンプレート機能 ない理由テンプレートコールが不一致のように見える
#include <iostream>
template <class T> void assign(T& t1,T& t2){
std::cout << "First method";
t1=t2;
}
template <class T> void assign(T& t1,const T& t2) {
std::cout << "Second method";
t1=t2;
}
class A
{
public:
A(int a):_a(a){};
private:
int _a;
friend A operator+(const A& l, const A& r);
};
A operator+(const A& l, const A& r) {
return A(l._a+r._a);
}
int main()
{
A a=1;
const A b=2;
assign(a,a+b);
}
iは、理解傾けるoperator+
に我々は新しいA
オブジェクトをcreateingされており、 intパラメータでctorを呼び出します。
constオブジェクトとしてa+b
を作成していますか?
非const左辺値、参考文献があるとします。 –