Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么我能';t在'std::initializer_列表中使用引用类型`_C++_Oop_Stl_Initializer List - Fatal编程技术网

C++ 为什么我能';t在'std::initializer_列表中使用引用类型`

C++ 为什么我能';t在'std::initializer_列表中使用引用类型`,c++,oop,stl,initializer-list,C++,Oop,Stl,Initializer List,当我尝试为包含引用的成员使用初始值设定项列表时,会出现以下错误: no matching function for call to ‘std::vector<const Exp&>::vector(<brace-enclosed initializer list>)’ [编辑以删除虚假示例]尽管标准中没有明确规定,但尝试使用标准库容器存储非对象类型应视为未定义行为。参见[容器.要求.概述] p1:“容器是存储其他对象的对象…” p4:“…X表示包含T类型对象的容

当我尝试为包含引用的成员使用初始值设定项列表时,会出现以下错误:

no matching function for call to ‘std::vector<const Exp&>::vector(<brace-enclosed initializer list>)’

[编辑以删除虚假示例]

尽管标准中没有明确规定,但尝试使用标准库容器存储非对象类型应视为未定义行为。参见[容器.要求.概述]

p1:“容器是存储其他对象的对象…”

p4:“…
X
表示包含
T
类型对象的容器类”


等等。

谢谢大家!!!我现在已经确定了这个解决方案:

std::array<const std::reference_wrapper<const Exp>, 2> ae{a1,a2};
std::数组ae{a1,a2};

我需要进行更多的调查,但我认为这将满足我目前的需求。

问题不在于初始值设定项列表。问题是你不能有一个参考向量。很有趣,非常感谢!我会读更多。你应该用什么作为一个参考容器?事实上,你似乎也不能把一个const放在一个容器里,呃,我是C++的一个完全的新手,15年后没有接触它!如果您想在容器中使用引用,请使用
std::reference\u wrapper
。感谢您的引用!但是,标准库有std::reference_wrapper,它专门用于在STL或其他容器中存储引用。@Nullrelation:
reference_wrapper
并不是专门为此目的设计的(它允许绑定表达式捕获引用),但它们可以用于此目的。
gcc (Ubuntu 5.3.1-14ubuntu2.1) 5.3.1 20160413
std::array<const std::reference_wrapper<const Exp>, 2> ae{a1,a2};