我遇到了另一個我不明白的問題。帶有標識參數的C++模板實例化
以下不會實例化(參數實例化失敗),爲什麼?
template<class E>
void operator[](typename boost::mpl::identity<E>::type e) const;
感謝你的幫助
我遇到了另一個我不明白的問題。帶有標識參數的C++模板實例化
以下不會實例化(參數實例化失敗),爲什麼?
template<class E>
void operator[](typename boost::mpl::identity<E>::type e) const;
感謝你的幫助
identity
可以用來強迫你明確指定模板參數。它有效地防止了該函數參數參與模板參數推導。
限定的類型名稱是非推導的上下文之一;即identity<E>::type
將不會用於推導E
的模板參數。
例如,如果您有:
template<class E>
void f(typename boost::mpl::identity<E>::type e) { }
f(42); // won't work
f<int>(42); // works
謝謝,我想讓我與你提供的例子 – Anycorn 2010-06-09 02:10:55
好看:http://kaba.hilvi.org/pastel/techniques_deduction.htm – 2011-10-05 00:25:43