commit 394e1bf99c7dc9ab2912665a441a11b6e947bdd7
Author: Georg Baum <[email protected]>
Date:   Sun Dec 28 18:08:18 2014 +0100

    Use std::regex if possible
    
    It works with gcc >= 4.9.0 and clang (with libc++ or gcc libstdc++ from gcc
    >= 4.9.0). The MSVC parg is missing, because I cannot test it, and the
    autotools build still link against boost::regex even if it is not needed, 
but
    I don't know how to fix that.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5409746..294dbe4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -246,12 +246,11 @@ set(LYX_GCC11_MODE)
 if(UNIX OR MINGW)
        execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion 
OUTPUT_VARIABLE GCC_VERSION)
        message(STATUS "Using GCC version ${GCC_VERSION}")
-# disabled because of missing match_partial
-#      if(GCC_VERSION VERSION_LESS 4.9)
+       if(GCC_VERSION VERSION_LESS 4.9)
                # <regex> in gcc is unusable in versions less than 4.9.0
                # see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53631
                set(LYX_USE_STD_REGEX 0)
-#      endif()
+       endif()
        if (LYX_ENABLE_CXX11)
                find_package(CXX11Compiler)
                if(NOT CXX11COMPILER_FOUND)
@@ -260,7 +259,6 @@ if(UNIX OR MINGW)
                set(LYX_GCC11_MODE "${CXX11_FLAG}")
        endif()
 else()
-# disabled because of missing match_partial
        set(LYX_USE_STD_REGEX 0)
 #      if(MSVC10)
 #              set(LYX_USE_STD_REGEX 1) #TODO should we use it in ECMAScript 
mode?
diff --git a/configure.ac b/configure.ac
index 6a735b1..77fe598 100644
--- a/configure.ac
+++ b/configure.ac
@@ -287,12 +287,11 @@ char * strerror(int n);
 // <regex> in gcc is unusable in versions less than 4.9.0
 // see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53631
 // clang defines __GNUC__ but how do the versions match?
-// disabled because of missing match_partial
-//#ifndef LYX_USE_STD_REGEX
-//#  if (__GNUC__ == 4 && __GNUC_MINOR__ >= 9) || __GNUC__ > 4 || 
defined(USE_LLVM_LIBCPP)
-//#    define LYX_USE_STD_REGEX
-//#  endif
-//#endif
+#ifndef LYX_USE_STD_REGEX
+#  if (__GNUC__ == 4 && __GNUC_MINOR__ >= 9) || __GNUC__ > 4 || 
defined(USE_LLVM_LIBCPP)
+#    define LYX_USE_STD_REGEX
+#  endif
+#endif
 
 #ifdef __CYGWIN__
 #  define NOMINMAX
diff --git a/src/support/regex.h b/src/support/regex.h
index 04f93ca..7c64caf 100644
--- a/src/support/regex.h
+++ b/src/support/regex.h
@@ -18,6 +18,8 @@
 namespace lyx {
   // inheriting 'private' to see which functions are used and if there are
   // other ECMAScrip defaults
+  // FIXME: Is this really needed?
+  //        If yes, then the MSVC regex implementation is not 
standard-conforming.
   class regex : private std::regex
   {
   public:

Reply via email to