On Tue, Aug 1, 2017 at 4:40 PM, David Malcolm <dmalc...@redhat.com> wrote > On Mon, 2017-07-31 at 19:46 -0400, tbsaunde+...@tbsaunde.org wrote: >> From: Trevor Saunders <tbsaunde+...@tbsaunde.org> >> >> For most of the history of this see >> https://sourceware.org/ml/gdb-patches/2016-10/msg00223.html >> The changes are mostly s/gdb/gtl/g >> >> include/ChangeLog: >> >> 2017-07-29 Trevor Saunders <tbsaunde+...@tbsaunde.org> >> >> * unique-ptr.h: New file. >> --- >> include/unique-ptr.h | 386 >> +++++++++++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 386 insertions(+) >> create mode 100644 include/unique-ptr.h >> >> diff --git a/include/unique-ptr.h b/include/unique-ptr.h >> new file mode 100644 >> index 00000000000..7903a5abefe >> --- /dev/null >> +++ b/include/unique-ptr.h >> @@ -0,0 +1,386 @@ >> +/* gtl::unique_ptr, a simple std::unique_ptr replacement for C++03. >> + >> + Copyright (C) 2007-2016 Free Software Foundation, Inc. >> + >> + This file is part of GCC. >> + >> + This program is free software; you can redistribute it and/or >> modify >> + it under the terms of the GNU General Public License as published >> by >> + the Free Software Foundation; either version 3 of the License, or >> + (at your option) any later version. >> + >> + This program is distributed in the hope that it will be useful, >> + but WITHOUT ANY WARRANTY; without even the implied warranty of >> + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> + GNU General Public License for more details. >> + >> + You should have received a copy of the GNU General Public License >> + along with this program. If not, see <http://www.gnu.org/license >> s/>. */ >> + >> +/* gtl::unique_ptr defines a C++ owning smart pointer that exposes a >> + subset of the std::unique_ptr API. >> + >> + In fact, when compiled with a C++11 compiler, gtl::unique_ptr >> + actually _is_ std::unique_ptr. When compiled with a C++03 >> compiler >> + OTOH, it's an hand coded std::unique_ptr emulation that assumes >> + code is correct and doesn't try to be too smart. > > The comments talk about C++03 (presumably due to the gdb heritage of > this code), but gcc's minimum requirement is for C++98.
It's actually C++04 but I don't remember the details. It happens to work with GCC 3.4 and thus C++98 though. Richard. > Does this code work with C++98? If so, presumably this comment should > state that (presumably by just writing "C++98 or C++03" wherever you > say "C++03"). > > [...snip...] > > Could the patch add a set of selftests for the new code? (e.g. assert > the number of times that a destructor is called, for various test > classes in various situations). This would also give a handy way to > run the pertinent code relatively quickly under valgrind (via "make > selftest-valgrind"). > > I'm not a global reviewer, so treat these as suggestions. > > Hope this is helpful > Dave