RFR: 8251274: Provide utility types for function SFINAE using extra template parameters
Erik Österlund
erik.osterlund at oracle.com
Mon Aug 31 09:05:47 UTC 2020
Hi Kim,
On 2020-08-31 10:43, Kim Barrett wrote:
>> On Aug 28, 2020, at 3:46 PM, Kim Barrett <kim.barrett at oracle.com> wrote:
>> I think that macro is okay. I would be even happier with it if we had
>> variable templates for the type traits, a la C++17, so
>>
>> std::is_integral<T>::value => std::is_integral_v<T>
>>
>> We could add a suite of IsIntegralV &etc variable templates.
> Though I think I’d rather not provide them that way.
>
>> Alternatively,
>> I wonder how much trouble we might be taking on if we conditionally defined
>> them with something like
>>
>> #if __cplusplus == 201402L
>> namespace std {
>> template<typename T> constexpr bool is_integral_v = std::is_integral<T>::value;
>> ...
>> }
>> #endif // __cplusplus
> I think adding them this way is worth considering, though not part of *this* change.
Agreed, we can open some other RFE for such things.
Thanks,
/Erik
>> (Note that we can't get *exactly* the behavior of C++17 for these, since
>> inline variables are a C++17 language feature. The difference is linkage,
>> but I don't expect anyone to care whether `&IsIntegralV<int>` in different
>> translation units result in the same address.)
More information about the hotspot-dev
mailing list