我有以下的(最小化)的代碼,這在VC2005的工作,但在2010年VS2010 C++成員模板函數的專業化錯誤
template <typename TDataType>
class TSpecWrapper
{
public:
typedef typename TDataType::parent_type index_type;
public:
template <bool THasTriangles>
void Spec(index_type& io_index)
{ std::cout << "False version" << std::endl; }
template <>
void Spec<true>(index_type& io_index)
{ std::cout << "True version" << std::endl; }
};
似乎不再起作用,當「INDEX_TYPE」是一個依賴型,我總是得到一個C2770:專門化的無效顯式模板參數(s)錯誤。請注意,這段代碼實際上足以產生錯誤 - 一個空的main就足以編譯它,模板甚至不需要實例化。
它工作正常,如果index_type不是依賴類型。任何想法,爲什麼在VC2010中如此,如果這實際上是標準行爲或錯誤,並且我能解決它?
你所傳遞的'TDataType'參數類型? – 2010-07-13 10:30:30
有一個'index_type'和'index'參數,是一個錯字嗎? – 2010-07-13 10:50:18
[非命名空間範圍中的顯式特化]的可能的重複(http://stackoverflow.com/questions/3052579/explicit-specialization-in-non-namespace-scope) – 2010-07-13 11:06:01