我不明白移动赋值是否能够/自由地改变变量x的地址并使所有指针和引用存储&x无效.我认为这是假的,因为默认的移动分配移动每个成员并保留这个指针,但它是否有保证?
编辑:示例
int x(1), y(2);
int& ref(x);
x = std::move(y);
// ref still valid ?
Run Code Online (Sandbox Code Playgroud) 我想知道在函数内部定义constexpr变量时内部会发生什么.程序是否存储了被调用函数的constexpr变量的每个版本?
例:
template <class T, std::size_t M, std::size_t N>
template <std::size_t M2, std::size_t N2>
Matrix<T, M, N>::Matrix(const Matrix<T, M2, N2>& m)
{
constexpr T m_min(MATHS::min(M, M2));
constexpr T n_min(MATHS::min(N, N2));
std::size_t i(0), j(0);
for ( ; i < m_min ; ++i )
{
for ( j = 0 ; j < n_min ; ++j )
m_elts[i][j] = m.m_elts[i][j];
for ( ; j < N ; ++j )
m_elts[i][j] = MATHS::CST<T>::ZERO;
}
for ( ; i < M ; ++i ) …Run Code Online (Sandbox Code Playgroud)