Đầu ra của chương trình sau ...Trình xây dựng mẫu có quyền ưu tiên trên bản sao bình thường và di chuyển constructor?
#include <iostream>
using namespace std;
struct X
{
X(const X&) { cout << "copy" << endl; }
X(X&&) { cout << "move" << endl; }
template<class T> X(T&&) { cout << "tmpl" << endl; }
};
int main()
{
X x1 = 42;
X x2(x1);
}
là
tmpl
tmpl
Kết quả mong muốn là:
tmpl
copy
Tại sao không phải là constructor sao chép cụ thể được ưu tiên hơn các constructor mẫu?
Vẫn còn cách khắc phục để sao chép và di chuyển quá tải của hàm tạo sẽ được ưu tiên hơn hàm tạo mẫu không?
Đây là lớp cuối cùng liên quan đến câu hỏi này: http://codereview.stackexchange.com/questions/20058/a-c11-any-class –