[Bug libstdc++/78905] New: Add a macro to determine that the <regex> library is implemented

mattyclarkson at gmail dot com gcc-bugzilla@gcc.gnu.org
Thu Dec 22 17:39:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78905

            Bug ID: 78905
           Summary: Add a macro to determine that the <regex> library is
                    implemented
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mattyclarkson at gmail dot com
  Target Milestone: ---

libstdc++ 4.7 and 4.8 shipped with a incomplete <regex> implementation.
Detecting this is a bit of a pain. I did my best to attempt a detection snippet
with:

#include <regex>
#if __cplusplus >= 201103L &&                             \
    (!defined(__GLIBCXX__) || (__cplusplus >= 201402L) || \
        (defined(_GLIBCXX_REGEX_DFS_QUANTIFIERS_LIMIT) || \
         defined(_GLIBCXX_REGEX_STATE_LIMIT)))
#define HAVE_WORKING_REGEX 1
#else
#define HAVE_WORKING_REGEX 0
#endif

This uses internal macros that are not guaranteed to exist. Would it be
possible to include a _GLIBCXX_REGEX_IMPLEMENTED (or similar) that would be
supported in future versions of the library so that the snippet can be updated
so that it doesn't break for future versions of the library?

I wrote a more lengthy description of the solution on stackoverflow:

http://stackoverflow.com/a/41186162/192993


More information about the Gcc-bugs mailing list