c++11相关内容
这个程序有什么问题? #include #include 主函数(){std::vector>向量;诠释 x(1);std::unique_ptr;ptr2x(&x);vec.push_back(ptr2x);//这个小命令有一个恶性错误.返回0;} 错误: 在 c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/min
..
以下代码编译并运行(vc2012 & gcc4.7.2)让我有些惊讶 类 Foo {结构酒吧 { int i;};上市:酒吧巴兹(){返回酒吧();}};int main() {Foo f;//Foo::Bar b = f.Baz();//错误自动 b = f.Baz();//行std::cout
..
我有课 模板类矩阵{//....}; 我想创建一个 typedef,它创建一个 Vector(列向量),它等效于大小为 N 和 1 的 Matrix.类似的东西: typedef 矩阵;向量 N; 这会产生编译错误.以下创建了类似的东西,但不完全是我想要的: 模板类向量:public Matrix{ }; 是否有解决方案或不太昂贵的解决方法/最佳实践?
..
..
如果我通过我的 GCC 4.7 快照传递以下代码,它会尝试将 unique_ptrs 复制到向量中. #include #include int main() {使用 move_only = std::unique_ptr;std::vectorv { move_only(), move_only(), move_only() };} 显然这不起作
..
当我定义这个函数时, 模板设置测试(常量集&输入){返回输入;} 我可以在代码的其他地方使用 test(mySet) 调用它,而无需显式定义模板类型.但是,当我使用以下功能时: 模板设置过滤器(常量集&输入,函数比较){设置转帐;for(auto it = input.begin(); it != input.end(); it++) {如果(比较(*它)){ret.
..
..
该标准是否准确定义了一个对象一旦被移出后我可以对它做什么?我曾经认为你可以对移动对象做的所有事情就是破坏它,但这还不够. 以标准库中定义的函数模板swap为例: 模板无效交换(T& a, T& b){T c = std::move(a);//第 1 行a = std::move(b);//第 2 行:赋值给移动对象!b = std::move(c);//第 3 行:
..
..
这是什么? 它有什么作用? 什么时候使用? 好的链接表示赞赏. 解决方案 维基百科页面关于 C++11 R 值引用和移动构造函数 在 C++11 中,除了复制构造函数,对象还可以有移动构造函数. (除了复制赋值运算符之外,它们还有移动赋值运算符.) 如果对象具有“右值引用"类型(Type &&),则使用移动构造函数而不是复制构造函数. std::move() 是一种类
..
我一直在研究 C++11 的一些新特性,我注意到其中一个是声明变量时的双 & 符号,例如 T&&变量. 首先,这个野兽叫什么?我希望 Google 允许我们搜索这样的标点符号. 具体是什么意思? 乍一看,它似乎是一个双重引用(就像 C 风格的双指针 T** var),但我很难考虑它的用例. 解决方案 它声明了一个 右值参考(标准提案文档). 这里是rvalue的介绍
..
我知道在 C++11 中我们现在可以使用 using 来编写类型别名,例如 typedefs: typedef int MyInt; 据我了解,相当于: 使用 MyInt = int; 新语法源于努力表达“模板类型定义": 模板
..
..
..
..
此常见问题解答是关于聚合和POD的,涵盖以下材料: 什么是聚合? 什么是POD(普通旧数据)? 它们有什么关系? 它们有什么特别之处,为什么特别? C++11 有哪些变化? 解决方案 如何阅读: 这篇文章比较长.如果您想了解聚合和 POD(普通旧数据),请花时间阅读.如果您只对聚合感兴趣,请阅读第一部分.如果您只对 POD 感兴趣,那么您必须首先阅读聚合的定义、含义和示
..
如何将 jstring (JNI) 转换为 std::string (c++) 与 utf8 字符? 这是我的代码.它适用于非 utf8 字符,但适用于 utf8 字符. std::string jstring2string(JNIEnv *env, jstring jStr){const char *cstr = env->GetStringUTFChars(jStr, NULL);st
..
..
我相信其他 Fedora 28 用户会知道,操作系统的 glibc 最近更新为 glibc 2.27.除了许多其他功能之外,2.27 还添加了 logf() 和 powf() 的新实现.这导致我的应用程序无法在具有较旧 glibc(例如 Debian)的发行版上运行.在 Debian 上调用应用程序时,会产生以下错误: ... libm.so.6 版本 GLIBC-2.27 未找到(./ap
..
我想开始尝试一些较新的 C++11 功能,似乎最好的支持是 gcc 4.8,而 Squeeze 附带 4.4.5. 但是,我不想对我当前的设置造成任何“损害".让 both 版本的 gcc 并排运行的最佳方法是什么?我主要担心大量依赖项,将它们全部纳入我当前的系统可能会使其不稳定. 有没有人设法做到这一点,涉及的步骤是什么? 如果做不到这一点,我可能会创建一个 VM 并在其下运行
..