Следующий код не работает. Я не знаю почему. Это имеет какое-либо отношение к неявным/явным? Это называется преобразованием?Ошибка компилятора при попытке преобразования конструктора преобразования
#include <type_traits>
template<typename T>
class A {
public:
A(T x) {_x=x;}
template<typename T2> explicit A(const A<T2> &r) {}
template<typename T2> explicit A(A<T2> &r){}
template<typename T2>
void operator=(const A<T2>& rhs) { _x = rhs._x; }
template<typename T2>
void operator=(A<T2>& rhs) { _x = rhs._x; }
T _x;
};
int main() {
const A<int> a(10);
A<int> b = a;
b = A<int>(5);
A<int> c(a);
b(a); // not working. why?
}
Ошибка: г ++ 6
test.cpp: In function ‘int main()’:
test.cpp:25:12: error: no match for call to ‘(A<int>) (const A<int>&)’
b(a); // not working. why?
Как это не работает? – NathanOliver
ошибка компилятора. –
Ваш конструктор копирования не принимает аргумент 'const'. Также вы ожидаете называть 'b'' 'operator()'? – tadman