Почему это не работает, поскольку есть возможность "конструировать" неявно?
class A {};
template<typename T>
class Type {
public:
Type() = default;
Type(T* ptr) {
}
};
template<typename T>
bool operator==(Type<T> l, Type<T> r) {
return true;
}
int main() {
A a;
Type<A> type(&a);
bool v = (type == &a); // Does not work
//bool v = (type == Type<A>(&a)); // That would work
}
Почему неявная конструкция Type<A>
с (&base
, которая является A*
) не используется?
Как я могу написать этот код, чтобы он работал?