问题标签 [g++-4.7]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
10517 浏览

c++ - std::set 没有成员 emplace

g++ 4.7.2 是否实现std::set::emplace了 C++11 标准所定义并在此处记录的?

我写了以下小测试用例:

在 G++ 4.7.2 下,编译失败:

也无法在IDEOne下编译,但它可以在 MSVC 2012 Update 1 下编译。

0 投票
1 回答
937 浏览

c++ - unique_ptr 成员,私有复制构造函数与移动构造函数

给定多个派生类的基类,目标是创建一个包装类,允许 STL 容器查看具有基接口的对象,尽管实际上可能将不同的派生类添加到容器中。(请参阅从异构 std::list 中检索数据)。

经过一番修改,我想出了一个新的派生类,它是unique_ptr基类的包装器。但是,移动构造函数让我感到困惑。

这不能与 g++ 4.7.2 一起编译

现在,为了使用BaseWrapper,我可以像这样实现一个公共移动构造函数:

这很好用。但是,如果我将其设为私有,它将无法编译

但是,我发现除了上面的之外,我可以定义一个私有的“复制”构造函数(当然,使其公开也可以):

有人可以告诉我这是否应该工作,为什么或为什么不?如果它应该工作,为什么我不能将移动构造函数设为私有?

您可以点击此链接以更完整地说明上述内容的玩具程序。

0 投票
2 回答
10170 浏览

c++ - 使用 g++ 3 编译的 g++ 4 发现错误“'fdopen' 未声明”

我有用 g++ 版本 3.something 愉快地编译的代码。然后我想构建一些其他包含 C++11 符号的代码,所以我升级到 g++ 4.7。现在我的原始代码没有构建。我得到错误:

'fdopen' 未在此范围内声明

根据手册页, fdopen() 在我包括在内的 stdio.h 中声明。我不确定它是否相关,但我在 Cygwin 环境中工作。我使用的 g++ 的确切版本是 Cygwin 提供的 4.7.2 版本。

自从我切换编译器以来,我没有更改此代码,我可以肯定地确认它已构建并且我的测试代码运行并通过了以前的编译器。

根据要求,演示问题的示例代码:

0 投票
1 回答
290 浏览

dll - 为什么在 MinGW 中编译的 DLL 会崩溃?

我使用 g++ 4.7 在 Cygwin 中编译了一个 DLL。它工作正常。但是当我在 MinGW 中编译相同的代码并尝试使用 DLL 时。它使程序因访问被拒绝 (CX00000005) 错误而崩溃,并将 libstdc++-6.dll 显示为问题 DLL。

任何帮助表示赞赏。提前致谢。

0 投票
1 回答
1321 浏览

c++ - 非命名空间范围内的内部结构的显式特化

我知道有很多关于“非命名空间范围的显式专业化”的帖子;我已经阅读了其中的大部分内容,但是(除非我没有很好地理解答案)他们没有回答这个特定的问题。事实上,我在我的程序中找到了一种解决方法,但如果有的话,我很想知道这个问题的“真正解决方案”。

问题

请多多包涵,很难用言语表达。我有一个模板类A<typename T, unsigned n>。我想将类型检查器定义为模板内部结构is_A<typename U>,用于检查是否U为 some A。这个结构继承自std::false_type原样,我专门将它派生自std::true_typefor template types A<U,n>

我为什么要这样做?因为我想定义一个模板方法,它在某些或其他情况A::method<U>下表现不同。UA

什么有效

  1. 将 的非专门定义放在 的is_a<U>声明之前A。然后使用 2 个模板参数而不是 1 个来放置专用版本; template <> template <typename T, unsigned n> struct is_A< A<T,n> > : std::true_type {};。为什么不呢,但我不太喜欢添加模板参数,并且爆炸的定义is_A也不那么漂亮......
  2. 删除is_A并使用另一个类型检查器,method它精确地描述了我期望的类型(,白名单方法而不是黑名单)。

除了这些解决方法之外,还有其他方法可以编写类似于以下标题的内容吗?

编码

这是我可以编写以重现错误的最小标题:

这是我在编译包含此标头的 cpp 文件时遇到的错误:

0 投票
3 回答
163 浏览

c++ - Sum helper 类失败

我写了以下 sumhelper:

这是CPP文件

为什么我不能做 sum(a,b,c) ?当我让 a+b+c 像演示一样工作时。

当我传递对象时它会给出一个编译错误,但当我传递原始类型时它不会

我无法理解错误模板参数扣除/替换失败..如何?

0 投票
1 回答
773 浏览

c++ - c++ 的通用线程 c 包装函数

在这里,我为 c 线程函数编写了一个线程包装器pthread_create()。它将允许在任何对象上调用任何方法并将任意数量的参数传递给该方法。API 是:

下面是模板:

以下是 CPP 文件:

我正在尝试x::method()使用参数调用。正如你所看到的,我有一个test()类似于x::method()只是为了证明我的线程正在工作的函数。但我希望能够调用x::method(). 有人可以指导我吗?

本质上,我当前的输出是:

我希望我的输出是

0 投票
3 回答
409 浏览

c++ - 如何在 n 维数组的可变参数模板中提取参数列表

我有一个具有以下规范的模板类:

并说它可以如下使用:

我怎样才能实现这个功能?我想如果我可以提取所有参数列表,我就可以将 n 维数组创建为直接递归调用。我现在该怎么做

0 投票
1 回答
305 浏览

c++ - 从 C++ 中的模板类派生非模板类时的问题

我正在尝试从指定我需要的女巫类型的模板类继承一个非模板类

我的代码是这样的:

基类的头文件(更新):

派生类的头文件和代码:

“sf”指的是使用 SFML 库的命名空间。我正在使用使用 cmake 从源代码编译的 SFML 2.0

(有关更多信息,您可以查看:http ://www.sfml-dev.org/ )

当我尝试使用类似于此的命令编译这些代码时:

我收到一些链接器错误,告诉您:

此外,我使用“g++ (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3”作为启用 C++11 的 C++ 编译器。

0 投票
1 回答
289 浏览

c++ - 基于每个项目在 Code::Blocks 中设置编译器

是否可以设置 Code::Blocks 以在每个项目的基础上使用指定的 C++ 编译器?它似乎是 . 下的全局设置Settings->Compiler。我总是可以运行自定义构建脚本,但想知道该功能是否已内置到 Code::Blocks。

此外,不同的编译器都是 g++ 4.7 的两个版本,所以特别是我真的需要Toolchain executables->Compiler's installation directory在每个项目的基础上进行设置。