內部提升有boost::detail::addr_impl_ref結構,基本上有一個構造函數接受T&
引用和超載operator T&()
返回該引用。它是在boost::addressof()實現中使用:boost :: detail :: addr_impl_ref的用途是什麼?
template<class T> T* addressof(T& v)
{
return boost::detail::addressof_impl<T>::f(boost::detail::addr_impl_ref<T>(v), 0);
}
boost::detail::addressof_impl<T>::f()
接受T&
作爲第一個參數。 boost::addressof<T>()
也有T& v
作爲參數。
爲什麼boost::detail::addr_impl_ref()
臨時對象用於存儲和返回T&
而不是僅僅通過T& v
?
可能一種解決方法以避免調用'OP&()'? – dirkgently 2010-02-25 11:50:07