相关疑难解决方法(0)

数组和Rvalues(作为参数)

我想知道是否有任何方法可以区分以下代码中显示的函数调用(使用数组作为参数):

#include <cstring>
#include <iostream>

template <size_t Size>
void foo_array( const char (&data)[Size] )
{
    std::cout << "named\n";
}

template <size_t Size>
void foo_array( char (&&data)[Size] )  //rvalue of arrays?
{
    std::cout << "temporary\n";
}


struct A {};

void foo( const A& a )
{
    std::cout << "named\n";
}

void foo( A&& a )
{
    std::cout << "temporary\n";
}


int main( /* int argc, char* argv[] */ )
{
    A a;
    const A a2;

    foo(a);
    foo(A());               //Temporary -> OK!
    foo(a2); …
Run Code Online (Sandbox Code Playgroud)

c++ arrays rvalue rvalue-reference c++11

7
推荐指数
1
解决办法
378
查看次数

标签 统计

arrays ×1

c++ ×1

c++11 ×1

rvalue ×1

rvalue-reference ×1