Remove algo duplication
Marc Glisse
marc.glisse@inria.fr
Tue Sep 17 10:27:00 GMT 2013
On Tue, 17 Sep 2013, Paolo Carlini wrote:
> Definitely I didn't follow the details of such conversation. But maybe you
> had it with Jon and I was distracted by the C++ front-end, for example. It's
> possible.
Nah, I probably just invented it.
>> This way would also provide a close enough emulation in C++03, but I can
>> totally understand if you don't want one. It isn't specifically meant for
>> the algo deduplication, which might use a completely different scheme
>> (François has already tried several). If we don't do the C++03 emulation,
>> using macros isn't worth it.
> In my personal opinion, we should first provide what the standards mandate,
> that's the priority. Then, if people really want such an emulation and we are
> sure that there are no backward compatibility issues vs old code, certainly
> I'm not going to object.
I am quite convinced there is no significant backward compatibility issue,
less<void> was simply meaningless beforehand, that's why it was so easy to
have the new less<void> accepted in the standard. Adding it in C++11 (not
just C++14) is basically free. Whether we want a C++03 emulation is a
harder question.
>>> In terms of details, we are trying not to use the deprecated
>>> unary_function / binary_function, not even as implementation details. In
>>> fact if we find ourselves often doing that, I don't see why we deprecated
>>> the facilities ;)
>> The current code for std::less uses binary_function, I didn't change it. It
>> would be easy to change (a single place thanks to the macros). But in some
>> sense, std::less<T> with T!=void is almost deprecated, so it isn't that
>> strange that it uses a deprecated feature.
> Now I remember, it's this issue:
> http://gcc.gnu.org/ml/libstdc++/2013-02/msg00073.html
>
> In short, if we like the feature and we start using it as implementation
> detail for C++11 features, we end up depending on a deprecated feature. The
> above use of -D_GLIBCXX_USE_DEPRECATED=0 is just an example, more generally I
> think we shouldn't add such dependencies and slowly, no rush, move away from
> the existing ones (eh, it may boil down to a few renames to uglified names
> and little more)
I didn't add any dependency and didn't use it for the new features, I only
left it where it was to minimize changes. It is really easy to remove (or
rename to __binary_function).
--
Marc Glisse
More information about the Libstdc++
mailing list