gpt4 book ai didi

c++ - boost::geometry 和 std 命名空间与 Visual Studio 2013 冲突

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:18:43 27 4
gpt4 key购买 nike

<分区>

我正在使用 Visual Studio 2013 和向导创建的 Win32 控制台应用程序项目。这段代码:

    #include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>

using namespace std;
using namespace boost::geometry;

int main()
{
model::d2::point_xy<int> p1(1, 1), p2(2, 2);
cout << "Distance p1-p2 is: " << distance(p1, p2) << endl;

return 0;
}

生成一个长模板 barf,开头为:

error C2039: 'iterator_category' : is not a member of 'boost::geometry::model::d2::point_xy<int,boost::geometry::cs::cartesian>'

相同的代码在 gcc 和 clang 上运行良好。我是否必须更改我的项目设置才能使其编译?

编辑

此代码适用于 Visual Studio 2015 CTP,因此问题是 VS2013 中的重载解析不足 Marc Glisse指出。

using namespace std 不是问题的根源,因为 juanchopanza claim 。认为这是一种不好的做法有点武断,因为有很多相反的论点(参见 Why is “using namespace std;” considered bad practice? 的讨论)。在这种特定情况下,可以争辩说 using namespace boost::geometry 是一种不好的做法,而不是 using namespace std

由于先有鸡还是先有蛋的悖论,一些编辑试图从 stackoverflow 问题中删除所有冗余,这将使搜索变得更加困难:在开始成功搜索之前,人们必须知道问题的答案。最终您可以将整个 stackoverflow 减少到 42,但实用程序会受到影响。

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