【发布时间】:2016-11-13 08:49:52
【问题描述】:
在我最近的一个项目中,我在 Ubuntu (cmake+gcc 4.8.4) 上进行了开发工作。代码构建良好。但是,当我尝试在 cygwin (cmake + gcc 5.3) 中构建相同的代码时,我收到 std::bind 的编译器错误。这在做#include <functional> 时消失了。不过,这让我有点担心。我希望我的代码在相同或非常相似的编译器上运行良好。
我刚刚发布了一段将在 CentOS 上使用的代码。我只是假设因为我的代码在 Ubuntu 上构建得很好,所以其他具有类似编译器的 linux 发行版应该不是问题。但是,我不再确定我的代码能否在 CentOS 上正常构建。
我的问题是这样的。我可以假设如果我的代码在我的 Ubuntu 机器上使用特定版本的 gcc 构建良好,那么它也可以在具有相同或更高版本 gcc 的其他 linux 发行版上构建良好?还是我过于乐观,应该依赖更多的测试?或者这与 std::bind 本身有关?
【问题讨论】:
-
std::bind函数在<functional>标准头文件中声明。仅仅因为您足够幸运,其他一些头文件恰好包含它并不意味着什么。如果你想使用std::bind,你应该明确地包含<functional>。 -
你没有在问题中回答你自己的问题吗?我很困惑。