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

remove _RWSTD_NO_MEMBER_TEMPLATES and workarounds

    XMLWordPrintableJSON

    Details

    • 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:
      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

        Attachments

          Activity

            People

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

              Dates

              • Created:
                Updated:

                Time Tracking

                Estimated:
                Original Estimate - 6h
                6h
                Remaining:
                Remaining Estimate - 6h
                6h
                Logged:
                Time Spent - Not Specified
                Not Specified