This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: g++ member function .at() for arrays


On Fri, Mar 8, 2013 at 12:42 AM, Robin Whittle <rw@firstpr.com.au> wrote:
> I am a newbie to this list.  Thanks for GCC, g++ the C++ standard
> library and GDB!  Apologies in advance if I have missed a web page where
> this question is answered.  Perhaps this question belongs on the
> libstdc++ list.

It doesn't belong to gcc@gcc.gnu.org, which is for discussion of the
development of the compiler.  The user support list is
gcc-help@gcc.gnu.org.  As your question is really more about C++ than
about GCC, you might also try a generic C++ forum.

> With g++ 4:4.7.2-1 and libstdc++6 4.7.2-4, installed on 64 bit Debian,
> using the -std=c++11 compiler option, I attempted to compile code such as:
>
>   aa1.at(1) = aa1.at(2) + aa1.at(3);
>   cout << aa1.size() << endl;
>
> where aa1 is an array of ints.  The error message was:
>
>    error: request for member 'at' in 'aa1', which is of
>    non-class type 'int [4]'.
>
> Yet these lines for vectors and deques:
>
>   vv1.at(1) = vv1.at(2) + vv1.at(3);
>   dd1.at(1) = dd1.at(2) + dd1.at(3);
>
> compiled and worked fine.  Both of these lines were implemented with
> bounds checking.
>
> According to my understanding of the near-final draft standard
> n3242-1.pdf, page 729, in the last item of Table 101, the member
> function at() should provide bounds checked access to:
>
>   basic_string, string, array, deque and vector.
>
> As far as I can tell, this does not work for arrays in 4.7.2.  Am I
> missing a compiler option?

No, but you do need to read about the difference between (buiilt-in)
arrays and instances of std::array types.  std::array has at; built-in
arrays such as int[4] do not have member functions (only classes do).

-- James


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]