2013-03-03 24 views

回答

7

术语universal reference是由斯科特·梅耶斯编造的术语,用于区分正常的右值引用,即int&&和模板代码中的右值引用,即T&&。这很重要,因为模板代码中引用了参考折叠规则,所以这个术语用于帮助教学。它被称为unversal reference的原因是因为它可以绑定到任何东西。

请记住,有没有这样的东西在C++语言universal referenceFunction&&右值引用至于语言而言。但是,是的,在Scott Meyer的术语中,Function&&在您的示例中为universal reference

+0

+1这几乎就像我们在同一个脚本中同时打字一样。做得好。 – 2013-03-03 02:42:37

+0

谢谢,也给你+1,因为我可能从阅读SO上的答案中学到了大部分内容。 – 2013-03-03 02:44:25

+1

gah,太晚了...浪费了我的时间进行代码测试:D – 2013-03-03 02:47:41

3

是& &一个普遍的参考?

的排序。像复活节兔子和圣诞老人​​一样,实际上没有像通用参考(对不起,如果我为你宠坏了)。标准中没有显示通用参考标准。这是由斯科特·梅耶斯(Scott Meyers)提出的术语,用来描述“特殊演绎规则”激活时的模板右值参考。

显示的内容有效的代码。特殊的扣除规则适用于这种情况。也就是说,当您传递一个左值参数Af时,Function将推断为A&。所以按斯科特的定义,是的,Function是一个“通用参考”。

1

Looks like it,std::forward<Function>在您的函数中调用时正确地转发参数类型。

相关问题