有什么区别
return $this->belongsToMany('App\SubCategory');
和
template <class T,class ARG_T=T&>
答案 0 :(得分:3)
这是消除基于该模板的函数中不必要的值副本的一种好方法,但可以选择使用&
表示 reference 类型。
例如你可以有功能
template <class T, class ARG_T = T&>
T add(std::type_identity_t<ARG_T> v1, std::type_identity_t<ARG_T> v2){
return v1 + v2;
}
使用type_identity
可以防止对T
类型的不必要推断(请参阅Template default argument loses its reference type)。
这意味着不会获取v1
和v2
的值副本。当然,获取引用并不总是更有效,因此对于某些实例化,您可能希望ARG_T
与T
相同。
答案 1 :(得分:0)
模板类型参数是(相关的)类型名称。类型名称后面的&符号使其成为左值引用。如果T
已被引用,则引用折叠规则适用。