initializer-list 相关问题

std :: initializer_list是C ++ 11中的一种特殊类型,用于从相同类型的值列表构造容器和其他类型。可以实现为一对指针或指针和长度,其存储可以是自动,临时或静态只读。

cpp中的initializer_list出了点问题:错误'没有名为'initializer_list的模板'

这是我的代码(只是从他人那里复制的测试),我试图使用initializer_list执行我的构造函数。 #include #include 使用命名空间std;类Num {...

回答 1 投票 0

嵌套列表初始化如何转发其参数?

在对std :: vector >的向量的初始化中foo {{1.0,“ one”},{2.0,“ two”}};我应该如何解释foo的构造?当我...

回答 1 投票 1

正在调用默认构造函数,但没有对其的引用

为什么下面的代码不起作用:#include 类Entity {public:/ * Entity(){std :: cout <

回答 3 投票 0

如何返回3个值之间的最大值?

我正在尝试使用max函数返回最大值,但不适用于3个值。 CodeBlocks错误:错误:'__comp'不能用作函数代码:#include ... ] >>>>

回答 2 投票 1

如何使用带有std :: initializer_list的构造函数设计类?

[当类的构造函数重载采用std :: initializer_list时,即使其他构造函数重载似乎是更好的匹配,此重载也将优先。描述此问题...

回答 2 投票 7

将初始化列表中的元素隐式转换为另一种类型

例如,我们有一个foo类。 foo类具有从int和string的隐式转换。另一个类bar具有构造函数:bar(std :: initalizer_list init)。我该怎么做...

回答 1 投票 0

[使用初始化列表的C ++变量参数

假定以下代码,这是sprintf的极小替代。 (_itoa等仅用于使代码简短。)#include #include class Arg {public:...

回答 2 投票 1

如何使用多维初始化器列表初始化自定义容器?

我目前正在使用其他方法(如ContainsValue()来为std :: map类型开发自定义包装器。但是,由于我尝试使其与std :: map尽可能兼容,所以我想知道它是否......

回答 1 投票 0

是否可以在C ++的成员初始化器列表中初始化数组?

所以,我有这个Game类,并且我有一个SDL_Rects数组。如果可能的话,我想在成员初始化器列表中对其进行初始化,而不是在构造函数中初始化数组...

回答 2 投票 5


将模板大小的数组传递给使用初始化列表的函数

我有一个模板化函数,它以任意大小的std :: array作为参数。它看起来大致像这样:template void foo(const std :: array &numbers {... ] >>] >>

回答 1 投票 1

另一个构造函数中的对象构造函数?

我对CPP还是很新鲜,我正在利用我们目前所有的空闲时间尝试新事物。我有2个单独的类,我想在主目录中都为它们创建一个初始化列表。...也许我不是...

回答 2 投票 -1

另一个构造器中的对象构造器??? {请更改标题...}

我对CPP还是很新鲜,我正在利用我们目前所有的空闲时间尝试新事物。我有2个单独的类,我想在主目录中都为它们创建一个初始化列表。...也许我不是...

回答 2 投票 -1

类中的常量成员

我有这个课程:课程模型{私人:link_list列表;浮动参数_B1;浮点参数_B0; public:model(); float getparameter_B1()const; float getparameter_B0()const; ...

回答 1 投票 0

C ++构造函数初始值设定项列表“错误:预期的'('或'{'”

这不会编译:类foo {结构节点{wchar_t val; unordered_map >子代; };节点根public:foo():root.val(L'า'),// ...

回答 1 投票 0

C ++ 11:自动如何处理()初始值设定项?

我知道C ++ 11使用自动初始化向量的方式,实际上是初始化了std :: initializer_list而不是向量。但是,给出以下代码:#include #include&...

回答 2 投票 -1

[std :: initializer_list with std :: thread

myNameSpace :: functionName(this,{“ abc”,“ abc1”}); //工作正常,但std :: thread(myNameSpace :: functionName (this,{“ abc”,“ abc1”}))); //错误:...

回答 1 投票 0


函数std :: make_shared ]的参数过多。 我缺少std::make_shared。它无法解析std::initializer_list的类型,还是我在做其他错误? #include <vector> #include <memory> class A {}; int main() { A a; std::vector<A> veca{A(), A{}, a}; // this works ofc std::vector<A> vecb({A(), A{}, a}); // this too std::make_shared<std::vector<A>>(vecb); // and this, ofc std::make_shared<std::vector<A>>({a}); // what's wrong here? return 0; } 错误: main.cpp:21:41: error: too many arguments to function ‘std::shared_ptr<_Tp1> std::make_shared(_Args&& ...) [with _Tp = std::vector; _Args = {}]’ std::make_shared<std::vector<A>>({a}); ^ In file included from /usr/include/c++/6/memory:82:0, from main.cpp:10: /usr/include/c++/6/bits/shared_ptr.h:632:5: note: declared here make_shared(_Args&&... __args) ^~~~~~~~~~~ 实时示例:https://onlinegdb.com/r1DlHquDL 我缺少std :: make_shared的内容。它不能解析std :: initializer_list的类型,还是我做错了其他事情? #include #include A类{}; ... 考虑以下问题的最小示例: template <typename... Ts> void f(Ts&&...); // replacement for std::make_shared int main() { f({1}); } 此情况在C ++标准的[temp.deduct.call/1]中进行了描述: 模板自变量推导是通过将每个包含参与模板自变量推导的模板参数的函数模板参数类型(称为P)与调用的相应自变量的类型(称为A)进行比较来完成的如下面所描述的。如果从P中删除引用和简历限定符,则给出某些std::initializer_list<P′>和P′[N]的P′或N,并且该参数是非空的初始化列表([dcl.init.list]),然后分别对初始化列表的每个元素进行推导,将P′作为单独的功能模板参数类型,将P′i和第i个初始值设定项元素用作相应的参数。在P′[N]的情况下,如果N是非类型模板参数,则从初始化器列表的长度推导N。 否则,初始化列表参数会使该参数视为非推论上下文 ([temp.deduct.type])。根据您的情况,最后一句话适用。有趣的是,该错误消息还显示了GCC的其他信息,这很奇怪。使用Clang,错误消息很明显: error: no matching function for call to 'f' note: candidate template ignored: substitution failure: deduced incomplete pack <(no value)> for template parameter 'Ts'

#include A类{}; ...

回答 1 投票 4

使用一个函数调用C ++初始化多个常量类成员

如果我有两个不同的常量成员变量,都需要基于同一函数调用进行初始化,是否有一种方法可以在不两次调用函数的情况下进行?例如,一个...

回答 2 投票 4

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.