从构造函数初始化列表中调用重载构造函数
在下面的代码中,我的目的是根据传递给类 的对象的参数来调用 kap (类 opacity)的两个重载构造函数之一材料: class opacity{ private: int mode; d…
如何“减少输入以创建 C”类型”使用统一初始化器?
我用 {} 玩过很多新的统一初始化。像这样: vector x = {1,2,3,4}; map getMap() { return { {1,"hello"}, {2,"you"} }; } 毫无争议的是,这个初始化…
C++11 库功能依赖于编译器特定代理
通过反复试验,我注意到某些 C++11 功能依赖于某种编译器魔法 (TM)。我一直在努力实现我自己的符合标准的 stdlib。我知道 stdlib 有现成的实现,但这…
初始化列表-构造不可复制(但可移动)对象的向量
人们可以将不可复制但可移动类型的右值push_back放入该类型的向量中: #include struct S { S(int); S(S&&); }; int main() { std::vector v; v.push_…
[c++]:构造函数中启动列表的问题
我偶然发现了一个我以前从未想过的问题。 这里是: 每个对象(在初始化列表中列出)的“构造函数”将被触发。 class B { public: B() { cout<<"B Con\…
为什么大小不是 std::initializer_list 的模板参数?
std::initializer_list 由编译器根据大括号括起来的初始化列表构造,并且该列表的大小必须是编译时常量。 那么为什么委员会决定从模板参数中省略大小…
正在使用“var{args}”进行初始化C++0x 的新功能,还是仅仅是语法糖?
我正在阅读 C++0x 常见问题 并遇到了详细说明初始值设定项列表的部分。这些例子大多是以下形式的变体: vector vi = { 1, 2, 3 }; vector vj({1, 2, 3…
分配给结构映射的语法
struct Structure { // Structure(const char* n, int v, bool a) : name(n), value(v), awesome(a) {} const char* name; int value; bool awesome; …
如何使用初始化列表初始化不可复制的容器?
可能的重复: 我可以列出初始化仅移动类型的向量吗? 我使用 gcc 4.6.1 来编译此代码 int main() { std::vector> vec({ std::unique_ptr(new int(0))…
C++0x:过载解析
在标准文本中有一个例子 8.5.4 (3) List-initialization [dcl.init.list] struct S { S(std::initializer_list); // #1 S(const std::string&); // #2…
为什么禁止“braced-init-list”在内置的“operator[]”中?
我刚刚注意到,在 N3291 中标记了一个更改(5.2.1 下标 [expr.sub]): 之前,可以使用新的重载 operator[] braced-init-list: struct X { Z operato…
初始化列表中的闭包删除器 (C++0x) 和编译器警告
我从 Visual C++ 2010 收到 警告 C4355: 'this' :used in base memberinitializer list: 我有一个持有句柄的类,并且我想自动关闭该句柄,即使该类的…
使用带有继承变量的初始值设定项列表
我已经摆弄一个程序大约 20 分钟,我发现由于某种原因它不允许我在初始化列表中使用继承的变量。例如这个程序: class A { protected: int i; }; clas…
C++11 中的最小和最大可变参数模板变体?
我在阅读标准时是否正确,从 min 和 max (以及 minmax 就此事而言)有新的 initializer_list 变体,但没有 Variadic Template 变体? 因此,这是可以…