c++11专题提供c++11的最新资讯内容,帮你更好的了解c++11。
在我使用的所有现代C编译器中,以下是合法的: std::array<float, 4> a = {1, 2, 3, 4}; 我正在尝试创建具有类似构造语义的我自己的类,但我遇到了一个恼人的问题.考虑以下尝试: #include <array> #include <cstddef> template<std::size_t n> class float_vec { private: std::
说,我想迭代一些内联定义的对.是否有更短的写作方式: for(auto pair : std::initializer_list<std::pair<int,int>>{{1,2}, {3,4}}) // ... ? 只需指定第一个元素就是一对.其余的将自动推断: for(auto& pair : {std::pair<int,int>{1,2}, {3,4}}) ; 支撑的封闭初始化
我已经定义了一个充当整数的类型.我想为我的类型定义std :: common_type的特化.但是,这种专门化应该能够将bounded_integer(我的类)的common_type与任何其他bounded_integer或内置整数类型的其他参数组合在一起.我希望以下代码都有效: std::common_type<bounded_integer<1, 10>>::type std::common
struct A { A() {} private: A(const A&); // Explicitly disable the copy constructor. }; int main() { const A a1; // OK. A a2; // OK. auto a3 = const_cast<A&>(a1); // Comp
矢量和链接列表 向量以串行方式存储在存储器中,因此可以使用运算符[]访问任何元素,就像在数组中一样. 链表包含可能不会连续存储在内存中的元素,因此必须使用迭代器通过以下指针访问随机元素. (你可能已经知道了.) 优先级的优势 最近我发现了’优先级队列’,它的工作方式类似于堆栈,但是元素是push() – ed到容器中,并且这个函数根据与运算符<的比较将它们按顺序放置,我相信. 这非常适合我,因为我
我是一名初学者,我读过有关该主题的 this文章(因为我使用的是AVX2兼容机). 现在,我已经阅读了this问题来检查你的指针是否对齐. 我正在用这个玩具示例main.cpp测试它: #include <iostream> #include <immintrin.h> #define is_aligned(POINTER, BYTE_COUNT) \ (((uintptr_t)(con
我如何可靠地对任何不是字符串文字的东西进行static_assert? 例如,在下面的代码中,我试图包装标准的断言宏,但静态拒绝任何不是字符串文字的消息(因为当断言触发时,除了字符串文字之外的任何东西都不会在运行时显示). #include <cassert> #include <string> #include <type_traits> #define my_assert(test, mes
我注意到函数模板中静态变量初始化的一个奇怪的行为.请考虑以下示例: MyFile * createFile() { std::cout << "createFile" << std::endl; return nullptr; } template <typename T> void test(const T& t) //void test(T t) { static M
我正在寻找最佳/正确的方法来确定容器是否通过.at()实现随机元素访问. 在不同(stl)容器相对于彼此进行排序的场景中(比如对容器std :: vector< int>进行排序,相对于std :: vector< double>),我做了以下事情: std::sort(toOrder.begin(), toOrder.end(), [&orderBy](int i, int j) -> bool
我有将不同算术类型转换为半精度浮点类型的函数(只是最低级别的uint16_t),并且我使用SFINAE和std :: enable_if对整数和浮点源类型有不同的函数: template<typename T> uint16_t to_half(typename std::enable_if< std::is_floating_point<T>::value,T>
目前,我的一个玩具类模板有两个看起来非常相似的构造函数: optional(const T& x) { construct(x); } optional(T&& x) { construct(std::move(x)); } 我可以将它们组合成一个构造函数模板,还是会以某种方式改变语义? template<typename U> optional(U&& x) { con
我们有模板类: template<int i> class A { ... }; 但是如何声明模板类的包装器: template<int... is> Pack { private: A<is...> attrs; }; 或者如何收集A类? 以示例使用std :: tuple #include <tuple> template <int i> class A { }; templa
对不起,如果标题令人困惑,我找不到一个简单的方法来写一个简单的句子.无论如何,我面临的问题是: // header: class SomeThing { private: SomeThing() {} // <- so users of this class can't come up // with non-initialized instanc
我有以下包装类: template <typename T> class Remap { public: Remap(T *data, int *remap) : data(data), remap(remap){}; T &operator[](std::size_t idx) const { return data[remap[idx]]; } private:
在 cppref中,它给出了常量初始化的语法: static T & ref = constexpr; static T object = constexpr; 这是我的两个问题: Q1 低价参考T&没有const绑定到constexptr,它是常量且不可修改的? 我试着提供一些例子,但失败了: static int& ref = 6; //error, need a `const` cons
我遇到了一种情况,我不得不将一组记录批处理到数据库.我想知道如何使用std算法实现这一目标. 给定10002条记录,我希望将其分成100个记录的区间进行处理,其余为2的区间. 希望下面的代码能更好地说明我想要完成的任务.我完全愿意接受迭代器的解决方案,lambdas任何现代的C语言乐趣. #include <cassert> #include <vector> #include <algorith
我正在阅读有关boost :: function的内容,我对它的使用及其与我在文档中找到的其他C结构或术语的关系有点困惑,例如: here. 在C(C 11)的上下文中,boost :: function的实例,函数对象,函子和lambda表达式之间有什么区别?应该何时使用哪种构造?例如,什么时候应该在boost :: function中包装一个函数对象而不是直接使用该对象? 以上所有C构造实现函
前段时间我被告知,实现两元操作符的通常模式需要在回报中采取最后的行动. Matrix operator+(const Matrix &a, Matrix &&b) { b += a; return std::move(b); } 但现在有一个特殊的规则,在返回时,编译器可能会将返回值视为临时值,然后这不是必需的 – 简单的返回b就足够了. 但是再一次,b在这个函数中有一个名字,因此
我正在开发一个库.我有从外部调用的接口类. 我还有一个不应该从外面调用的内部引擎. 当我在这里和那里阅读时,我应该隐藏内部引擎类,甚至不填充它的标题.由于我有以下结构: interface.hpp: #include "engine.hpp" class interface{ private: enigne eng; }; interface.cpp: #include "engine.
我想知道一个initializer_list< T>要求T有一个赋值运算符.下列 struct Foo { Foo& operator=( const Foo& ) = delete; }; std::vector<Foo> f = { Foo( ), Foo( ) }; 编译于clang 3.4.2但在Visual Studo 2013上失败并出现“错误C2280:’Foo& Foo