6
我有以下代碼:隱式轉換和運算符重載
struct helper {
template<typename T> helper(T const&);
};
helper operator*(helper const&);
struct A {};
int main() {
// (1)
A a;
sizeof(*a);
// (2)
int i;
sizeof(*i);
}
情況(1)編譯罰款和我明白它正在使用的隱式轉換到helper
類型和給定的操作過載。
對於情況(2),但是,我得到一個編譯錯誤:
invalid type argument of unary '*' (have 'int')
爲什麼用於A
類型,但不int
隱式轉換?