This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Re: [Patch, libstdc++/64584, libstdc++/64585] Clear basic_regex after imbue and make assign exception tolerant
- From: Tim Shen <timshen at google dot com>
- To: Jonathan Wakely <jwakely at redhat dot com>
- Cc: "libstdc++" <libstdc++ at gcc dot gnu dot org>
- Date: Sat, 11 Apr 2015 20:10:25 +0000
- Subject: Re: [Patch, libstdc++/64584, libstdc++/64585] Clear basic_regex after imbue and make assign exception tolerant
- Authentication-results: sourceware.org; auth=none
- References: <CAG4ZjNmMbv4c-bix8VZV8CrudrZZOgMas3cKPhLwoiTnPOMUCA at mail dot gmail dot com> <20150116121217 dot GA3360 at redhat dot com> <CAG4ZjNndkWfK_zOkO5BK66jEQ+BQS+rGQ9nDGTzrQBZfLeZNJw at mail dot gmail dot com> <CAG4ZjNnkipPA1HaAJADdVHe_C2wFaAksxu5W5KF94oEXgwQPFg at mail dot gmail dot com> <20150118002426 dot GW3360 at redhat dot com> <CAG4ZjNmMVGiSphQyg-jgjLu+uHdAABj0t8Rs+tafETM3-WBrdw at mail dot gmail dot com> <20150118012244 dot GX3360 at redhat dot com>
On Sun, Jan 18, 2015 at 1:22 AM, Jonathan Wakely <jwakely@redhat.com> wrote:
> On 17/01/15 16:53 -0800, Tim Shen wrote:
>>
>> Then "std::move on a pointer definitely doesn't pessimize" is true.
>> Here I read pessimize as "less efficient".
>
>
> Well without optimization it certainly is less efficient, because you
> get calls to std::move (just compare the code for foo and bar at
> http://goo.gl/lTxgBw), but I'm confident even at -O1 they disappear
> and its nothing to worry about.
>
> Anyway, I'll review your new patches tomorrow - thanks.
I realized that std::move() on an user defined iterator may cause
compilation error, if user explicitly deletes its move ctor/assign.
So what we really need is a sfinae that detects move ctor/assign
first; if nothing usable is found, fall back to copy ctor/assign.
It now sounds like a premature optimization to me :). Maybe I should
just change it back to copying?
--
Regards,
Tim Shen