我有一個類,我已經寫了哪種類型的擦除。公共接口是:爲什麼這個模糊不清?
template <typename T>
value(const T &t);
value(value &&v);
template <typename T>
operator T() const;
當我從一個的std :: string我有沒有問題創造價值的實例,一切正常。當我嘗試獲得的std :: string退了出來,用static_cast<std::string>(val)
,其中val
是正在舉行的std :: string值的實例中,我從VS2012以下錯誤:
錯誤C2440:'的static_cast:值「不能從轉換'到std :: string的」
沒有構造函數可採取源類型,或者如果我註釋掉的模板轉換運算符,並添加
operator std::string() const
構造函數重載解析模棱兩可
然後編譯。我認爲,std :: string構造函數和模板化的演員操作符之間具有相同的匹配優點。任何人都可以提出發生了什麼事以及如何解決它?
錯誤消息是否顯示候選人? –
請提供一個編譯示例(儘可能多達相關錯誤)。 –
這是我寫的一個小例子:http://codepad.org/XJ2Jv5fT – Dave