友元函数定义不适用于vs2013

时间:2015-08-06 01:29:13

标签: c++ visual-studio-2010 visual-studio-2013

我正在将一些c ++代码从VS2010移动到VS2013,并遇到了一些无法编译的代码。经过进一步调查,似乎在类声明中定义友元函数会导致VS2013出现问题。

以下是一个例子:

class foo
{
    friend float lerp(float a, float b, float c)
    {
        return 1.0f;
    }

    float uselerp()
    {
        return lerp(1.f, 1.f, 1.f);
    }
};

此代码在VS2010中编译良好,但在2013年,产生以下错误: friend.cpp(15):错误C3861:'lerp':找不到标识符

有趣的是,这段代码在VS2013下编译得很好:

class foo
{
    friend float lerp(float a, float b, float c);

    float uselerp()
    {
        return lerp(1.f, 1.f, 1.f);
    }

};

float lerp(float a, float b, float c)
{
    return 1.0f;
}

(我意识到朋友的功能实际上没有使用该类)

定义的友元函数是否存在导致该错误的有效(即基于C ++标准)的原因,或者这是MSFT实现的问题?

0 个答案:

没有答案