假设我有这样的功能:
void MyFun(MyClass* p){
}
p
实际上是一个未知长度的数组。如何重载它以接受rvalue MyClass
。
答案 0 :(得分:0)
基本上,你不能 - 因为作为一个rvalue并不是真正的类型系统的一部分。没有&#34;指向右值T&#34;或类似的东西。另外,因为使用指针意味着指向对象可以是std::array<MyClass, 123>
的任何子类(这也是我不会尝试将指针重新解释为BunchOfMyClasses
的原因,即使我知道长度为123)。
我建议你将原始数组包装在某个类中(对于它的哑名:void MyFun(const BunchOfMyClasses &);
void MyFun(BunchOfMyClasses &&);
),并且:
{{1}}
作为重载。