在下面:CRTP和默認的賦值運算符
template<typename Derived>
class Base:
{
inline Derived& operator=(const Base<Derived>& x);
}
這是否聲明刪除默認的拷貝賦值運算符或者我有兩個運營商:
inline Derived& operator=(const Base<Derived>& x);
// (declared by me)
和
inline Base<Derived>& operator=(const Base<Derived>& x);
// (declared by the compiler)
在這種情況下,當我調用函數時,編譯器將如何獲得正確的運算符?
只有當模板實際在代碼中實例化時,它纔會出現編譯器錯誤。否則,它會編譯得很好。 – SomeWittyUsername
@icepack是真的,即時假設模板實例化 –
@icepack這是不正確的。如果一個模板總是格格不入,而不管你傳遞了什麼樣的模板參數,那麼模板可以被拒絕而不需要實例化。這適用於他的類模板,如果默認賦值運算符也會被實例化。 –