commit 22f599250e926555bdef0d50ee2198b3eb2da02a
Author: Jean-Marc Lasgouttes <[email protected]>
Date: Wed Jun 12 15:03:18 2019 +0200
Remove support for gcc 4.6
This was kept so long because of Ubuntu 12.04 LTS, but having a
not-really-c++11 compiler is not nice.
---
INSTALL | 5 ++---
config/lyxinclude.m4 | 5 ++---
src/TexRow.h | 10 ----------
src/support/Cache.h | 4 ----
src/support/Changer.h | 4 +---
src/support/RefChanger.h | 11 -----------
src/support/unicode.cpp | 7 -------
src/support/unicode.h | 4 ++--
8 files changed, 7 insertions(+), 43 deletions(-)
diff --git a/INSTALL b/INSTALL
index d19159f..20c60a5 100644
--- a/INSTALL
+++ b/INSTALL
@@ -47,9 +47,8 @@ You will also probably need GNU m4 (perhaps installed as gm4).
Requirements
------------
-First of all, you will need a recent C++ compiler, where recent means
-that the compilers are close to C++11 standard conforming like gcc (at
-least 4.6) or clang.
+First of all, you will need a C++11 standard conforming compiler, like gcc (at
+least 4.7) or clang.
LyX makes great use of the C++ Standard Template Library (STL).
This means that gcc users will have to install the relevant libstdc++
diff --git a/config/lyxinclude.m4 b/config/lyxinclude.m4
index 8e1d279..b58facc 100644
--- a/config/lyxinclude.m4
+++ b/config/lyxinclude.m4
@@ -170,7 +170,7 @@ selects C++11 mode; gives an error when C++11 mode is not
found.
AC_DEFUN([LYX_CXX_CXX11_FLAGS],
[AC_CACHE_CHECK([for at least C++11 mode], [lyx_cv_cxx11_flags],
[lyx_cv_cxx11_flags=none
- for flag in -std=c++14 -std=c++11 "" -std=c++0x -std=gnu++14 -std=gnu++11
-std=gnu++0x ; do
+ for flag in -std=c++14 -std=c++11 "" -std=gnu++14 -std=gnu++11 ; do
save_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$AM_CPPFLAGS $CPPFLAGS"
save_CXXFLAGS=$CXXFLAGS
@@ -413,8 +413,7 @@ if test x$GXX = xyes; then
AM_CPPFLAGS="$AM_CPPFLAGS -Wall -Wextra"
fi
case $gxx_version in
- 2.*|3.*) AC_ERROR([gcc >= 4.6 is required]);;
- 4.0*|4.1*|4.2*|4.3*|4.4*|4.5*) AC_ERROR([gcc >= 4.6 is required]);;
+ 2.*|3.*|4.@<:@0-6@:>@) AC_ERROR([gcc >= 4.7 is required]);;
esac
if test x$enable_stdlib_debug = xyes ; then
dnl FIXME: for clang/libc++, one should define _LIBCPP_DEBUG2=0
diff --git a/src/TexRow.h b/src/TexRow.h
index e85b141..8edcd8e 100644
--- a/src/TexRow.h
+++ b/src/TexRow.h
@@ -119,7 +119,6 @@ public:
///
TexRow();
-#if !(defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 6))
/// Copy can be expensive and is not usually useful for TexRow.
/// Force explicit copy, prefer move instead. This also prevents
/// move()s from being converted into copy silently.
@@ -127,10 +126,6 @@ public:
TexRow(TexRow && other) = default;
TexRow & operator=(TexRow const & other) = default;
TexRow & operator=(TexRow && other) = default;
-# else
- //for gcc 4.6, nothing to do: it's enough to disable implicit copy
during
- // dev with more recent versions of gcc.
-#endif
/// Clears structure.
void reset();
@@ -241,7 +236,6 @@ struct TexString {
docstring str;
///
TexRow texrow;
-#if !(defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 6))
/// Copy can be expensive and is not usually useful for TexString.
/// Force explicit copy, prefer move instead. This also prevents
/// move()s from being converted into copy silently.
@@ -249,10 +243,6 @@ struct TexString {
TexString(TexString && other) = default;
TexString & operator=(TexString const & other) = default;
TexString & operator=(TexString && other) = default;
-# else
- //for gcc 4.6, nothing to do: it's enough to disable implicit copy
during
- // dev with more recent versions of gcc.
-#endif
/// Empty TexString
TexString() = default;
/// Texstring containing str and TexRow with enough lines which are
empty
diff --git a/src/support/Cache.h b/src/support/Cache.h
index f1738c7..2b97f6e 100644
--- a/src/support/Cache.h
+++ b/src/support/Cache.h
@@ -33,15 +33,11 @@ namespace lyx {
*/
template <class Key, class Val>
class Cache : private QCache<Key, Val> {
-#if !(defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 6))
static_assert(std::is_copy_constructible<Val>::value,
"lyx::Cache only stores copyable objects!");
static_assert(std::is_default_constructible<Val>::value,
"lyx::Cache only stores default-constructible objects!");
using Q = QCache<Key, Val>;
-#else
- typedef QCache<Key, Val> Q;
-#endif
public:
///
diff --git a/src/support/Changer.h b/src/support/Changer.h
index 2de7520..212bcf1 100644
--- a/src/support/Changer.h
+++ b/src/support/Changer.h
@@ -24,9 +24,7 @@ struct Revertible {
virtual void keep() {}
};
-//for gcc 4.6
-//using Changer = unique_ptr<Revertible>;
-typedef unique_ptr<Revertible> Changer;
+using Changer = unique_ptr<Revertible>;
} // namespace lyx
diff --git a/src/support/RefChanger.h b/src/support/RefChanger.h
index 65bb781..c279e47 100644
--- a/src/support/RefChanger.h
+++ b/src/support/RefChanger.h
@@ -46,18 +46,7 @@ private:
};
-//for gcc 4.6
-#if defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 6)
-template <typename X>
-struct RefChanger : unique_ptr<RevertibleRef<X>>
-{
- RefChanger(unique_ptr<RevertibleRef<X>> p)
- : unique_ptr<RevertibleRef<X>>(move(p))
- {}
-};
-#else
template <typename X> using RefChanger = unique_ptr<RevertibleRef<X>>;
-#endif
/// Saves the value of \param ref in a movable object
diff --git a/src/support/unicode.cpp b/src/support/unicode.cpp
index b583982..ecc415b 100644
--- a/src/support/unicode.cpp
+++ b/src/support/unicode.cpp
@@ -66,13 +66,6 @@ IconvProcessor::IconvProcessor(string tocode, string
fromcode)
{}
-// for gcc 4.6
-IconvProcessor::IconvProcessor(IconvProcessor && other)
- : tocode_(move(other.tocode_)), fromcode_(move(other.fromcode_)),
- h_(move(other.h_))
-{}
-
-
bool IconvProcessor::init()
{
if (h_)
diff --git a/src/support/unicode.h b/src/support/unicode.h
index 17b95dd..6373e47 100644
--- a/src/support/unicode.h
+++ b/src/support/unicode.h
@@ -62,8 +62,8 @@ public:
char * out_buffer, size_t max_out_size);
/// target encoding
std::string to() const { return tocode_; }
- // required by g++ 4.6
- IconvProcessor(IconvProcessor && other);
+ // required by g++ 4.7
+ IconvProcessor(IconvProcessor &&) = default;
};
/// Get the global IconvProcessor instance of the current thread for