我试图用初始化列表初始化一个类成员const std::array
引用:
class Foo {
const std::array<const int&, 3> &bar;
Foo() : bar({ 1, 2, 3 }) {}
}
但貌似
无法使用带括号的初始化程序列表初始化引用类型'const std :: array&'
问:有没有一种方法可以初始化带有右值的const std::array
引用成员?
答案 0 :(得分:0)
从对问题的评论中我可以得出结论,我没有意识到两件事:
const
引用成员与const
引用非成员不同,因为它们不会延长临时值的寿命。作为附加说明,包含std::array
的成员T&
可能导致以下情况:
警告:“ Foo”具有虚拟功能,但非虚拟析构函数
错误:形成指向引用类型'std :: array :: value_type {aka const int&}'的指针
在两种情况下,我都不完全知道发生了什么,但是那将是单独的问题。