传递临时值时,常量引用参数会发出警告

时间:2015-01-18 01:44:11

标签: c++ visual-c++ typedef const-reference pass-by-const-reference

以下代码向我发出警告,将临时作为参数传递给带引用的函数:

struct TempObject
{
    typedef TempObject& reference;

    const int First, Second;

    TempObject(int first, int second) : First(first), Second(second) {}
};

void Function(const TempObject::reference ref) 
{ 
    std::cout<< ref.First << ref.Second; 
}

int main(int argc, char *argv[])
{
    Function(TempObject(1, 2));  // warning is given here
}

这让我感到困惑,因为Function实际上是在接受const TempObject::reference。将TempObject::reference的定义更改为typedef const TempObject& reference会导致编译器不再发出警告。

为什么会有区别?我在微软和英特尔的编译器中发现了这种行为。

0 个答案:

没有答案