Я пытаюсь создать энергозависимый массив, и мне нужно получить к нему доступ с помощью оператора [].
Я не нахожу способа сделать это для std :: array, однако встроенные массивы работают нормально.
С GCC 8.2.0 следующее:
#include <iostream>
#include <array>
int main()
{
const volatile std::array<int,2> v = {1,2};
std::cout << v[0] << std::endl ;
}
дает
<source>: In function 'int main()':
<source>:6:21: error: passing 'const volatile std::array<int, 2>' as
'this' argument discards qualifiers [-fpermissive]
std::cout << v[0] << std::endl ;
^
In file included from <source>:2:
/opt/compiler-explorer/gcc-8.2.0/include/c++/8.2.0/array:185:7: note:
in call to 'constexpr std::array<_Tp, _Nm>::value_type& std::array<_Tp,
_Nm>::operator[](std::array<_Tp, _Nm>::size_type) [with _Tp = int; long
unsigned int _Nm = 2; std::array<_Tp, _Nm>::reference = int&;
std::array<_Tp, _Nm>::value_type = int; std::array<_Tp, _Nm>::size_type =
long unsigned int]'
operator[](size_type __n) noexcept
^~~~~~~~
Compiler returned: 1
, а
#include <iostream>
int main()
{
const volatile int v[2] = {1,2};
std::cout << v[0] << std::endl ;
}
отлично работает.
Как мне получить доступ к const volatile std :: array?