![]() |
1
3
问题是由参考衰减引起的:(正确的术语是“参考崩溃”)。
代码中问题的答案是f()是:
因为参考衰变,它变成了:
如您所料,这当然会与定义如下的任何内容不明确:
这可能有效(固定版本):
原因是这种引用衰减只发生在T上模板化的函数中。在这种情况下,您的指针类是,但构造函数实际上不是模板本身,因此T&对于T&版本来说永远不是有效的T。 第一个版本仍然存在与代码相同的问题,因为的地址\只是使用t作为指针的模板参数。我们实际上需要原始类型。 |
![]() |
bolov · 使用右值引用,而不是使用可变模板转发引用 8 年前 |
![]() |
abraham_hilbert · 使用通用引用时的类型推断 8 年前 |
![]() |
user3816764 · 如何获得对右值的引用? 10 年前 |