template <int K>
class Wrap
{
// stuffs
};
如果我實例化模板,如Wrap < 5>4 > p;
,怎麼了? 我得到預期數字常量錯誤之前的非限定符號。如何解決這個問題?在數字常量之前預期爲非限定標識
template <int K>
class Wrap
{
// stuffs
};
如果我實例化模板,如Wrap < 5>4 > p;
,怎麼了? 我得到預期數字常量錯誤之前的非限定符號。如何解決這個問題?在數字常量之前預期爲非限定標識
如果我像模板那樣創建模板會出現什麼問題?
僅僅通過查看聲明,這應該是直觀的顯而易見的:即使對於人類來說它也是令人困惑的!編譯器沒有辦法在這裏處理>
的雙重含義:它是否意味着「大於」?它是否意味着「關閉模板參數列表」?事實證明,這意味着都是,編譯器沒有提示應用在哪裏的含義。兩者在技術上都是有效的解析。
變化Wrap < 5>4 > p;
到Wrap < (5>4) > p;
遇到的第一個>
被作爲模板參數列表的末尾,而不是比操作者更大>
ISO C++ [14.2/3]
當解析模板-ID,第一個非嵌套
>
被當作模板 參數列表的末尾,而不是一個大於運營商。
歧義。改爲使用Wrap <(5> 4)>。
謝謝。我會在五分鐘內接受你的回答。 – 2011-05-26 18:34:12