gpt4 book ai didi

c++ - 命名空间作用域的模板函数在另一个命名空间中变得可见

转载 作者:太空狗 更新时间:2023-10-29 19:57:41 26 4
gpt4 key购买 nike

<分区>

我遇到了一个奇怪的命名空间范围行为(使用 g++ 4.8.2)。为了解释这个问题,我提取了一个最小的代码来重现这种奇怪的行为:

namespace Weird {
template <typename T>
struct Rec
{
T val;
Rec( T const& _val ) : val( _val ) {}
};

template <typename T>
Rec<T>
foo( Rec<T> const& r )
{
return Rec<T>( r.val * 2 );
}

};

Weird::Rec<double>
bar( Weird::Rec<double> const& _input )
{
return foo( _input );
}

在这段代码中,我希望 G++ 提示“foo”没有在“bar”的范围内定义,但事实并非如此;代码编译正常。

所以我有点困惑。g++ 错了吗(命名空间泄漏)?或者,如果不是,根据哪种机制“foo”在“bar”中可见?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com