有可能是賦值運算符可以推導出成員函數模板的一個特例?拷貝構造函數作爲模板成員函數被忽略
例如,我有一個布爾參數類模板,並希望實現分配運算模板實參不管在任何特定值。
#include <iostream>
template<bool sw>
struct A {
A() {
std::cout << __PRETTY_FUNCTION__ << '\n';
}
template<bool input_sw>
A & operator = (const A<input_sw> &a) {
std::cout << __PRETTY_FUNCTION__ << '\n';
return *this;
}
};
int main()
{
A<true> a;
A<true> b;
a = b;
}
在代碼片段上面鐺和gcc編譯的二進制文件打印出任何關於分配 - 據我可以告訴默認分配在這裏產生的可能性,儘管從模板中推斷出這一點。
複製賦值運算符是一個非模板函數。仍然有一個隱式生成的複製賦值操作符在您的代碼中調用。這對寫入的內容是有利的,因爲非模板函數優於模板函數。 – 0x499602D2