Uploaded image for project: 'C++ Standard Library'
  1. C++ Standard Library
  2. STDCXX-978

remove _RWSTD_NO_MEMBER_TEMPLATES and workarounds



    • Type: Task
    • Status: In Progress
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 4.3.x
    • Fix Version/s: 4.3.0
    • Component/s: Configuration
    • Labels:


      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




            • Assignee:
              elemings Eric Lemings
              sebor Martin Sebor
            • Votes:
              0 Vote for this issue
              0 Start watching this issue


              • Created:

                Time Tracking

                Original Estimate - 6h
                Remaining Estimate - 6h
                Time Spent - Not Specified
                Not Specified