http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56257



             Bug #: 56257

           Summary: std::vector allows access to the elements of

                    _Vector_base

    Classification: Unclassified

           Product: gcc

           Version: 4.6.3

            Status: UNCONFIRMED

          Severity: normal

          Priority: P3

         Component: libstdc++

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: bange...@gmail.com





To my complete consternation, a student of mine came by and showed me some code

her wrote that essentially looked like this:

-----------------------

#include <vector>



struct X :

  public std::vector<int>

{

  X()

    {

      this->_M_impl;

    }

};

-----------------------

While accessing the implementation details of std::vector was a clever

optimization in his case, it's certainly an end-run around the encapsulation

principle. It also doesn't lead to portable code.



Is it intentional that the derivation of std::vector from _Vector_base is only

protected and not private?



Best

 W.

Reply via email to