我遇到了另一个我不明白的问题。带有标识参数的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