c++11相关内容

C ++ 11 - 声明非静态数据成员为'auto'

C ++ 11允许将非静态数据成员声明为“auto”,如果它们在声明中初始化的话?例如: struct S { auto x = 5; //代替'int x = 5;',这是绝对允许的 }; GCC 4.7拒绝上述代码,但接受 int x = 5; 。 假设这不是编译器错误,而是标准真的不允许它,为什么不呢?它将像声明局部变量 auto 一样有用。 ..
发布时间:2016-10-13 10:24:55 C/C++开发

在C ++ 11中省略返回类型

我最近发现自己在C ++ 11模式下使用gcc 4.5的以下宏: #define RETURN (x)→ decltype(x){return x; } 并编写如下函数: template auto f(T& x)RETURN((g(h(std :: forward(x))))) 我一直这样做,以避免不必要的有效地 ..
发布时间:2016-10-13 10:24:31 C/C++开发

如何扩展对可变模板基类的调用?

我有一组非正交的策略,所有这些策略都实现了一个通用命名方法,这些策略添加了安全检查。 我希望用户能够组合策略以允许更复杂的验证,而无需手动为每个组合案例创建策略。 我的方法是创建一个新的策略类来组合其他方法。 下面的简化示例显示了C作为组合类,这里的方法id是组合的。预期的结果是,当在C上调用id时,顺序调用每个基类的id。 #include ..
发布时间:2016-10-13 10:24:05 C/C++开发

我们可以应用没有明确引用从C ++标准的规范性引用的内容吗?

在C ++ 11标准( 最近草案is N3337 )section 1.2 规范参考说: 以下引用的文档对于本文档的 应用程序是不可或缺的。对于注日期的引用文件,只有引用的版本 适用。对于未注明日期的引用,最新版本的 引用文件(包括任何修订)适用。 关于如何应用参考。容易的情况是当C ++ 11显式地引用回一个引用,例如在 3.9.1 基本类型中,它说: / p> [... ..
发布时间:2016-10-13 10:22:47 C/C++开发

在其中C ++标准的版本“(i + = 10)+ = 10”有未定义的行为?

在C ++中,以下是否有未定义的行为: int i = 0; (i + = 10)+ = 10; 在我的回答 在C和C ++中+ =的结果是什么?这里的细微之处是,默认响应似乎是“是”,而正确的答案是“它取决于C ++标准的版本”。 如果它依赖于标准的版本,请解释UB在哪里和不在哪里。 解决方案 tl; dr :(i + = 10)+中执行的修改 ..
发布时间:2016-10-13 10:21:44 C/C++开发

C ++ 11中的默认函数有什么意义?

C ++ 11增加了告诉编译器创建默认实施任何特殊成员职能。虽然我可以看到删除一个函数的值,其中的值明确默认一个函数? 我可以看到的唯一一点是,默认构造函数只有在没有其他构造函数存在时才被创建: class eg { public: eg(int i); eg()= default; }; 但是这真的比现在更好吗? class eg { pub ..
发布时间:2016-10-13 10:20:10 C/C++开发

C ++标准库中的哪些头保证包含另一个头?

C ++标准库头文件可能以未指定的方式包含彼此,因此程序员通常不应该依赖于一个头文件包括另一个头文件。然而,在少数情况下,头部被保证包括另一个头部,或者提供否则将需要包括另一个头部的某些功能。 解决方案 这个答案忽略了C头文件 - 和 。在C ++库头文件(所有引用都是N4582)中: 由 ..
发布时间:2016-10-13 10:19:40 C/C++开发