Tag: c ++ 11

从元组或variables模板参数创build数组初始值设定项

我想从一组可变模板参数中静态embedded程序代码(最好在ROM部分)中描述持久化存储器布局(例如Flash或EEPROM器件),其中必要的偏移量在编译时自动计算。 目标是创build一个合适的数组初始值设定项,它可以在运行时迭代,而不受std::get(std::tuple)获得的限制,这需要编译时间索引。 第一种方法 我已经创build了一个简单的数据项描述符类,它绑定了一个特定的ID(应该作为客户端的枚举types提供)到数据布局(offset和size): template < typename ItemIdType > struct DataItemDescBase { const ItemIdType id; const std::size_t size; const std::size_t offset; DataItemDescBase(ItemIdType id_, std::size_t size_, std::size_t offset_) : id(id_) , size(size_) , offset(offset_) { } DataItemDescBase(const DataItemDescBase<ItemIdType>& rhs) : id(rhs.id) , size(rhs.size) , offset(rhs.offset) { } }; 客户端应该使用绑定到特定数据types和偏移量的类: template < typename DataType , typename ItemIdType […]

指针和引用之间的区别作为线程参数

这是一个例子: #include<iostream> #include<thread> using namespace std; void f1(double& ret) { ret=5.; } void f2(double* ret) { *ret=5.; } int main() { double ret=0.; thread t1(f1, ret); t1.join(); cout << "ret=" << ret << endl; thread t2(f2, &ret); t2.join(); cout << "ret=" << ret << endl; } 输出是: ret=0 ret=5 用gcc 4.5.2编译,有和没有-O2 这是预期的行为? 这个程序数据竞赛是免费的吗? 谢谢

什么是适用于SFINAE的C ++ 11标准中提到的“直接上下文”?

C ++ 11标准第14.8.2 / 8段规定了replace失败应该或不应该导致“硬”编译错误(从而导致编译失败)或“软”错误的条件导致编译器从重载parsing的候选集合中丢弃一个模板(不会使编译失败,并启用众所周知的SFINAE成语): 如果replace导致无效的types或expression式,则键入演绎失败。 无效的types或expression式是使用replace参数编写的格式不正确的types或expression式。 [注意:访问检查是替代过程的一部分。 -end note] 只有函数types及其模板参数types的上下文中的无效types和expression式才会导致扣除失败 。 […] 在“整个C ++ 11标准”中,“ 直接上下文 ”这个词只出现了8次,每次它们跟随(或作为其一部分出现)下列(非规范性)文本的实例: [注意: 替代types和expression式的评估可能导致副作用,例如类模板特化和/或函数模板特化的实例化,隐式定义函数的生成等。这些副作用不在“即时上下文“,并可能导致程序不合格。 – 注意] 这个注释给出了直接上下文意味着什么(不是非常慷慨的)暗示,但是至less对于我来说,这往往不足以决定replace是否应该导致“硬”编译错误。 题: 你能提供一个解释,一个决策程序,和/或一些具体的例子来帮助搞清楚在哪些情况下,replace错误在函数types及其模板参数types的“ 直接上下文 ”中是否发生?

什么是构造函数inheritance?

在C ++ 11中,inheritance构造函数是什么意思? 如果这是我认为的(基类构造函数被引入派生类的范围),它对我的​​代码有什么影响? 这个function有什么用途?

如何在C ++ 0x中组合哈希值?

C ++ 0x添加hash<…>(…) 。 虽然我找不到hash_combine函数,如boost中所示 。 什么是最干净的方式来实现这样的事情? 也许,使用C ++ 0x xor_combine ?

如何在处理负数的C / C ++ / Obj-C中编写一个模(%)运算符

我的一个C语言的宠物讨厌(作为一个math家)是这样的 (-1) % 8 // comes out as -1, and not 7 fmodf(-1,8) // fails similarly 什么是最好的解决scheme? C ++允许模板和运算符重载的可能性,但这两个对我来说都是阴暗的水域。 感激地收到的例子。

Eclipse CDT索引器不知道C ++ 11容器

我在Eclipse CDT中configuration了一个C ++ 11项目来使用gcc-4.7。 这不是我的系统上的默认编译器,它不支持C ++ 11。 为了编译工作,我需要传递flag -std=c++11并且还包含以下头文件path: /usr/local/Cellar/gcc/4.7.2/gcc/include/c++/4.7.2 -std=c++11 /usr/local/Cellar/gcc/4.7.2/gcc/include/c++/4.7.2 每当我使用像std::unordered_set或std::unordered_map这样的C ++ 11容器types,CDT索引器就会抱怨: Symbol unordered_set could not be resolved 。 如何告诉索引器正确parsing这些符号? 这是我如何configuration我的索引器: 就我所了解的设置而言,索引器应该使用当前活动构buildconfiguration中的编译器设置。 编译工作正常,所以为什么不索引?

我可以在Xcode中使用C ++ 11吗?

我正在考虑在一些跨平台项目(Windows + Mac)中使用一些C ++ 11function(例如auto )。 在Windows上,Visual Studio支持即将到来的C ++ 11标准的一部分,这将允许我简化部分代码库,所以很自然地我会对开始使用这些特性感兴趣。 但据我所知,目前的XCode版本(3.2.4 + GCC 4.2)完全不支持任何C ++ 11function。 我可以以某种方式升级GCC版本或CLang版本吗? 还是应该咬我的舌头,等待苹果在未来某个时候打包新版本?

如何在gcc中启用C ++ 11?

我在Mac OSX Mountain Lion上使用http://hpc.sourceforge.net上的gcc 4.8.1。 我想编译一个C ++程序,它使用<string>的to_string函数。 我需要每次使用flag -std=c++11 : g++ -std=c++11 -o testcode1 code1.cpp 有没有办法在默认情况下包含这个标志?

使用C ++ 11随机库生成随机数

正如标题所示,我试图找出使用新的c ++ 11 <random>库生成随机数的方法。 我已经试过这个代码: std::default_random_engine generator; std::uniform_real_distribution<double> uniform_distance(1, 10.001); 我所拥有的代码的问题是,每次我编译和运行它时,都会生成相同的数字。 所以我的问题是随机库中的其他function可以做到这一点,而真正的随机? 对于我的特殊用例,我试图在[1, 10]