Boost logo

Boost :

Subject: Re: [boost] [multi_index] Taking advantage of C++17 auto template params to simplify key specification
From: Joaquin M López Muñoz (joaquinlopezmunoz_at_[hidden])
Date: 2017-09-27 19:14:35


El 27/09/2017 a las 19:15, Steven Watanabe via Boost escribió:
> AMDG
>
> On 09/27/2017 06:13 AM, Joaquin M López Muñoz via Boost wrote:
>> El 27/09/2017 a las 13:47, Dominique Devienne via Boost escribió:
>>> On Wed, Sep 27, 2017 at 12:53 PM, Joaquin M López Muñoz via Boost <
>>> boost_at_[hidden]> wrote:
>>> <snip>
>>> C++17 def#2
>>>
>>> [...]
>>> I'm out of my depth here, but the fact you use inheritance means the
>>> two types are not the
>>> same as a consequence, right? I.e. std::is_name<def#1, def#2>
>>> is false?
>> Correct, these are different types.
>>
>> <snip>
>>
>> No, template aliases don't support partial specialization. But I don't
>> see any fundamental
>> problem with subclassing.
>>
> To make them be the same type, the best way is
> to reverse it so that member, const_mem_fun, etc.
> are aliases for key.

Nice idea, but alas not applicable here since I want member etc. to
remain C++03 compatible.
Another approach would be to write a template<auto Member> struct
key_impl{using type=...;}
metafunction class here all the partial specialization goes and then do
template<auto Member> using key=typename key_impl<Member>::type. Either way,
the issue raised by Dominique does not cause any trouble AFAICS.

Joaquín M López Muñoz


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk