wxf*_*les 2 c++ pointers valarray
我正在尝试提取一个const指针指向数组的部分方式.我发现它在使用矢量时工作正常,但在使用valarray时不会编译(VS 2008).有人可以解释一下问题是什么吗?
struct vector_test
{
std::vector<int> v;
const int *pointy(const int i) const
{
return &(v[i]); // Ok
}
};
struct valarray_test
{
std::valarray<int> v;
const int *pointy(const int i) const
{
return &(v[i]); // error C2102: '&' requires l-value
}
};
Run Code Online (Sandbox Code Playgroud)
ild*_*arn 11
std::valarray<T>::operator [](std::size_t)返回一个T&,这将工作正常.
std::valarray<T>::operator [](std::size_t) const返回a T,这将是一个右值,因此无法获取其地址.
因为valarray_test::pointy是本身const,valarray_test::v被视为const并因此const过载operator[]被调用.制作valarray_test::v mutable或制作valarray_test::pointy非const.
| 归档时间: |
|
| 查看次数: |
1709 次 |
| 最近记录: |