c++11专题提供c++11的最新资讯内容,帮你更好的了解c++11。
我们正在开发一个用C开发的模块,但是考虑到新的C 11,我正在考虑迁移到那个. 如何进行?两者是相同的还是有一些编译器依赖? 我的软件目前支持Windows和Linux.我正在使用Microsoft Visual Studio以及GCC来构建它. 总的来说,如果有的话需要做哪些改变? 旧C将与您的C 11编译器一起使用 >查看如何使用迭代器(也许你可以移动到范围)>检查是否使用函数指针(也许你可以
根据C标准,类构造函数的noexcept noexcept-spec究竟适用于什么? >功能体? >在可选的ctor-initializer中初始化成员? >在可选的mem初始化器中初始化基类? >在可选的mem初始化器中初始化类成员? >复合语句? > function-try-block? >在ctor-initializer中未初始化对象基类的初始化? >初始化对象类成员未初始化在ctor-
我现在一直在编写一个图像处理算法,在某些时候我需要收集一些关于转换像素的统计信息,以便更深入地了解我应该遵循的进一步开发方向.我需要收集的信息格式如下: key: RGB value value: int 我做了什么,是我打开转换后的图像并通过它迭代,将我需要的值保存到具有以下签名的std :: unordered_map: typedef std::unordered_map<boost::gi
我注意到使用特定于操作系统的原语实现的许多无锁算法,例如描述为 here的旋转锁(使用Linux特定的原子基元)通常使用“cpu relax”指令.使用GCC,可以通过以下方式实现: asm volatile("pause\n": : :"memory"); 具体来说,该指令通常用于while循环旋转锁的正文,同时等待一个变量设置为某个值. C11似乎没有提供任何类型的便携式“cpu_relax”
假设我们有以下功能: void someFunction(int * araye){ for (int i=0;i<5;i++) cout <<araye[i]<<' '; cout <<'\n'; } 我们可以通过以下语法将数组传递给此函数,在即将到来的c 0x标准下? : someFunction({1,2,3,4,5}); 如果是这样,我们甚至可以在任何情况下使用这种语法,其中数组元
试图为他们学习左值,右值和内存分配.因此,有很多学习材料会有一些混乱. rvalue是一个值,只需要在创建它的表达式的边界中存在(至少为C 11).所以它有一个占据的地址和内存块.但根据定义,我们无法获得rvalue的地址,因为与左值相比,它是一个临时对象. 但即使在C 11之前,我们也可以通过从函数返回并将其保存为const引用类型(呃,我猜不是地址而是值)来获取rvalue的地址. 那么,更确
我有一个枚举类如下: enum class Age { Eleven, Twelve, Thirteen }; 然后我有一个名为vector< Person>的方法. GetPeopleOfAge(年龄).什么是一个好的设计,以便开发人员可以打电话给这个并让11,12和13的人?我可以称它为三次,这很糟糕,但我确实想提一下我考虑过它.我可以添加一个All枚举并对我的方法进行
有一个声明如: enum DrawBoldMode : unsigned { DBM_NONE = 0, DBM_ITEM = 1<<0, // bold just the nearest line DBM_SECTION = 1<<1, // bold all lines in the sam
我正在尝试使用G的一些新的C 0x功能. Lambdas,auto和其他新功能就像一个魅力,但基于范围的for循环无法编译.这是我测试的程序: #include <iostream> #include <vector> int main () { std::vector<int> data = { 1, 2, 3, 4 }; for ( int datum : data )
这是一些枚举类: enum class Race : char {AINU, ELF, DWARF, MAN, EAGLE, HOBBIT, ENT, ORC, WIZARD}; enum class Color: char {RED, ORANGE, YELLOW, GREEN, BLUE, PURPLE}; enum class Direction: char{UP, DOWN, LEFT,
我有以下代码通过共享内存进行进程间通信.一个进程写入日志,另一个进程从它读取.一种方法是使用信号量,但是在这里我使用的是原子标志(log_flag),该标志位于共享内存中.日志(log_data)也是共享的. 现在的问题是,这将适用于x86架构,还是需要信号量或互斥体?如果我使log_flag非原子呢?鉴于x86具有严格的内存模型和主动缓存一致性,优化不适用于指针,我认为它仍然可以工作? 编辑:请
Clang-3.2可以按预期编译和编写行为: struct have_f { int f(int i) {return 10;} }; struct empty {}; template <class T> struct outer { T t; // if T have f(), define outer_f() template<c
我在C 11/14中看到实现类型列表的两种可能的样式,如果有任何理由选择一种,我很好奇.第一种技术是 outlined here,并在Boost的MPL库上进行了自己的设计.在这种风格中,您定义了使用类型列表并对其进行操作的元“自由函数”(顶级使用声明).以下是如何实现一个适用于类型而不是第一个样式的值的std :: transform的元版本: template <typename... Arg
参见英文答案 > C++11 make_pair with specified template parameters doesn’t compile                                    1个 以下代码有什么问题: #include <ctime> #include <vector> #include <utility> #include <algorithm>
这段代码无法解释: struct sometype { template <typename T> T* get() { return nullptr; } }; template <typename T> struct anothertype { #if 1 template <typename T2> struct some_wrapper { typedef T2
经过一番调查,我发现C 0x将元素向后存储在元组中. 例如,请使用以下代码: std::tuple<char, char, char> x('\0', 'b 'a'); char* y = (char*)&x; std::cout << sizeof(x) << std::endl; std::cout << y << std::endl; 使用GCC 4.5.2编译时,我得到以下输出: 3 ab
在下面的代码中,包装器< T>声明对象被包含可移动的T,其中T是不完整的类型.可移动的析构函数是在没有T的完全知识的情况下才能实例化的,但是包装器的析构函数只能被前向声明,这意味着如果〜可移动()在〜包装的定义点被实例化就足够了). #include <utility> template<class T> struct movable { movable() noexcept = def
根据C标准,以下三种结构定义是否有差异? struct Foo { int a; }; struct Foo { int a{}; }; struct Foo { int a{0}; }; 最后两个是C 11. 给定第一个定义,如果您创建一个具有自动存储持续时间的Foo实例,那么将会初始化一个.您可以执行聚合初始化来初始化它. Foo f{0}; // a is in
编译以下代码 void f(char *, const char *, ...) {} void f(const char *, ...) {} int main() { f("a", "b"); } 与cl ang给我这个错误: prog.cpp:6:2: error: call to 'f' is ambiguous f("a", "b"); ^ pr
参见英文答案 > Range based for-loop on array passed to non-main function                                    2个 这些天我自己学习C并且我有一些问题需要理解为什么这段代码不使用#g -std = c 11 source.cpp进行编译.实际上我使用哪个特定标准并不重要,它只是不编译. #include