如何声明一个函数接受任意长度的rvalue数组

时间:2018-04-01 10:42:42

标签: c++ c++11 c++14 c++17

假设我有这样的功能:

void MyFun(MyClass* p){

}

p实际上是一个未知长度的数组。如何重载它以接受rvalue MyClass

的数组

1 个答案:

答案 0 :(得分:0)

基本上,你不能 - 因为作为一个rvalue并不是真正的类型系统的一部分。没有&#34;指向右值T&#34;或类似的东西。另外,因为使用指针意味着指向对象可以是std::array<MyClass, 123>的任何子类(这也是我不会尝试将指针重新解释为BunchOfMyClasses的原因,即使我知道长度为123)。

我建议你将原始数组包装在某个类中(对于它的哑名:void MyFun(const BunchOfMyClasses &); void MyFun(BunchOfMyClasses &&); ),并且:

{{1}}

作为重载。