我想模板鑄造操作員與專業化的布爾,但它不工作。模板鑄造操作員和部分專業化
template<typename T> //Don't know if the fact that C is templated itself is relevant here
class C
{
...
template<typename U> operator U() const { return another_namespace::MyCast<U>(*this); }
template<> operator bool() const { return IsValid(); }
};
這使我(克++ 4.6)
非命名空間範圍顯式特 'C類< T>'
現在只需
operator bool() const { return IsValid(); }
由本身就像MyCast一樣工作(這是在外部名稱空間中聲明的朋友函數) E)。有什麼方法可以讓我在這裏得到預期的behHoavior?
編輯:我後來發現this,看起來像相同的基本問題,但答案(這提供了一個非常複雜的解決方案)看起來專爲字符串設計。另外,那裏的問題變成了含糊不清,我認爲這不是問題 - 我得到了一個非常不同的編譯器錯誤消息。
不就做你想做的,如果你只是使用非模板'運營商布爾()'? – sth
@sth哈!看起來像。事實證明這是一個很大的程序,我還有很多其他的錯誤需要我去解決,但是編譯器通過了包含類C的文件。沒有意識到非專業化是一種選擇。把你的回答作爲答案,只要一切正常,你就會得到信用。 –
好的,這裏你去:) – sth