我有一個函數可以在任何類型的STL容器上運行,並且需要將容器的元素類型傳遞給另一個模板函數。實際上,當我說任何容器類型時,我並不是真正的意思。嚴格地說只有向量和數組。我有這樣的事情:接受任何類型的STL容器並使用其值類型
template <typename T> int ProcessData(T data)
{
return DoInternalProcessing<T::value_type>(data.data(), data.size());
}
MSVC11接受此代碼,但gcc沒有。它出什麼問題了?對於gcc,我認爲值類型也是一個參數,但這需要調用者指定T(容器類型),這對於std :: array來說是非常笨拙的,這個函數的主要目的是提供一個非常簡單的接口從基礎數據中抽象出來。
gcc給了什麼錯誤? –
'return DoInternalProcessing(data.data(),data.size());'? –
錯誤:意外的類型名稱'value_type':期望的表達式 – akai