Details
-
Task
-
Status: In Progress
-
Major
-
Resolution: Unresolved
-
4.3.x
-
None
Description
Quoting from the following discussion:
Martin Sebor wrote:
> Travis Vitek wrote:
>>
>>
>>> Eric Lemings wrote:
>>>
>>>> Travis Vitek wrote:
>>>>
>>>>> Eric Lemings wrote:
>>>>>
>>>>> How about member templates? Are these unilaterally supported by all
>>>>> compilers now?
>>>>>
>>>> From below...
>>>>
>>>> _RWSTD_NO_INLINE_MEMBER_TEMPLATES /* not used at all */
>>> Well there's an INLINE_MEMBER_TEMPLATES.cpp check and then there's a
>>> separate MEMBER_TEMPLATES.cpp check. I assume they check different
>>> things.
>>
>> Yes, I realize this. The former checks that inline member templates are
>> supported. The latter checks that member templates can be defined
>> outside the body of the class.
>>
>> AFAICT, inline member templates are used in library code without guards,
>> so you can safely assume support for 4.2.x and later.
>>
>> If you want anything further than that [i.e. member templates defined
>> outside the body of the class, member template overloads, ...], you have
>> to look to see what all of the supported compilers allow. If one or more
>> of the currently supported compilers defines _RWSTD_NO_MEMBER_TEMPLATES,
>> then you will likely have to work around the issue in any new code. If
>> none of them define it, then some decision will have to be made if it is
>> safe to assume support for other compilers or not.
>
> Starting with 4.3.0, I think we can safely assume full support for
> member templates and remove all workarounds involving the macros
> as well as the macros (and the config test) themselves. The only
> thing I'd double-check before doing this cleanup is string when
> using HP aCC 3 because of an extern template bug.
>
> I don't even think there is a compiler that we target with 4.2.x
> that doesn't support member templates in any form. IIRC, the last
> one that had trouble with member templates (their out-of-line
> definitions) was MSVC 6.
>
> Martin