const std::array 成员引用可以用右值初始化吗?
Can const std::array member reference be initialized with an rvalue?
我正在尝试使用初始化列表初始化 class 成员 const std::array
引用:
class Foo {
const std::array<const int&, 3> &bar;
Foo() : bar({ 1, 2, 3 }) {}
}
但显然
cannot initialize reference type 'const std::array &' with a parenthesized initializer list
问:有没有办法用右值初始化 const std::array
引用成员?
根据对问题的评论,我可以得出结论,我没有意识到两件事:
const
引用成员与 const
引用非成员不同,因为它们不会延长临时值的生命周期。
- Class 成员可以在构造函数中用花括号初始化(如果适用,例如数组)。
作为附加说明,包含 T&
的成员 std::array
可能导致以下情况:
warning: 'Foo' has virtual functions but non-virtual destructor
error: forming pointer to reference type 'std::array::value_type {aka const int&}'
在这两种情况下,我不完全确定发生了什么,但这些将是不同的问题。
我正在尝试使用初始化列表初始化 class 成员 const std::array
引用:
class Foo {
const std::array<const int&, 3> &bar;
Foo() : bar({ 1, 2, 3 }) {}
}
但显然
cannot initialize reference type 'const std::array &' with a parenthesized initializer list
问:有没有办法用右值初始化 const std::array
引用成员?
根据对问题的评论,我可以得出结论,我没有意识到两件事:
const
引用成员与const
引用非成员不同,因为它们不会延长临时值的生命周期。- Class 成员可以在构造函数中用花括号初始化(如果适用,例如数组)。
作为附加说明,包含 T&
的成员 std::array
可能导致以下情况:
warning: 'Foo' has virtual functions but non-virtual destructor
error: forming pointer to reference type 'std::array::value_type {aka const int&}'
在这两种情况下,我不完全确定发生了什么,但这些将是不同的问题。