diff --git a/src/gsi/gsi/gsiSerialisation.h b/src/gsi/gsi/gsiSerialisation.h index fbe84d9b4..a9437c021 100644 --- a/src/gsi/gsi/gsiSerialisation.h +++ b/src/gsi/gsi/gsiSerialisation.h @@ -1799,6 +1799,8 @@ private: tl::Variant m_v; }; +#if __cplusplus >= 201703L + /** * @brief Specialization for std::optional */ @@ -1874,6 +1876,8 @@ private: std::optional m_v; }; +#endif + // ------------------------------------------------------------ // Vector adaptor framework diff --git a/src/gsi/gsi/gsiTypes.h b/src/gsi/gsi/gsiTypes.h index 6e5a3bc02..c7cbec2b1 100644 --- a/src/gsi/gsi/gsiTypes.h +++ b/src/gsi/gsi/gsiTypes.h @@ -439,7 +439,9 @@ template <> struct type_traits<__int128> : generic_type_trait template <> struct type_traits : generic_type_traits { }; template <> struct type_traits : generic_type_traits { }; template <> struct type_traits : generic_type_traits { }; +#if __cplusplus >= 201703L template struct type_traits > : generic_type_traits { }; +#endif #if defined(HAVE_QT) template <> struct type_traits : generic_type_traits { }; template <> struct type_traits : generic_type_traits { }; @@ -479,7 +481,9 @@ template <> struct type_traits : generic_type_trait template <> struct type_traits : generic_type_traits { }; template <> struct type_traits : generic_type_traits { }; template <> struct type_traits : generic_type_traits { }; +#if __cplusplus >= 201703L template struct type_traits &> : generic_type_traits { }; +#endif #if defined(HAVE_QT) template <> struct type_traits : generic_type_traits { }; template <> struct type_traits : generic_type_traits { }; @@ -516,7 +520,9 @@ template <> struct type_traits<__int128 &> : generic_type_trait template <> struct type_traits : generic_type_traits { }; template <> struct type_traits : generic_type_traits { }; template <> struct type_traits : generic_type_traits { }; +#if __cplusplus >= 201703L template struct type_traits &> : generic_type_traits { }; +#endif #if defined(HAVE_QT) template <> struct type_traits : generic_type_traits { }; template <> struct type_traits : generic_type_traits { }; @@ -554,7 +560,9 @@ template <> struct type_traits : generic_type_trait template <> struct type_traits : generic_type_traits { }; template <> struct type_traits : generic_type_traits { }; template <> struct type_traits : generic_type_traits { }; +#if __cplusplus >= 201703L template struct type_traits *> : generic_type_traits { }; +#endif #if defined(HAVE_QT) template <> struct type_traits : generic_type_traits { }; template <> struct type_traits : generic_type_traits { }; @@ -592,7 +600,9 @@ template <> struct type_traits<__int128 *> : generic_type_trait template <> struct type_traits : generic_type_traits { }; template <> struct type_traits : generic_type_traits { }; template <> struct type_traits : generic_type_traits { }; +#if __cplusplus >= 201703L template struct type_traits *> : generic_type_traits { }; +#endif #if defined(HAVE_QT) template <> struct type_traits : generic_type_traits { }; template <> struct type_traits : generic_type_traits { }; diff --git a/src/gsi/gsi_test/gsiTest.h b/src/gsi/gsi_test/gsiTest.h index f39bdf15f..73c462e0a 100644 --- a/src/gsi/gsi_test/gsiTest.h +++ b/src/gsi/gsi_test/gsiTest.h @@ -591,6 +591,7 @@ struct B */ static tl::Variant new_b_by_variant (); +#if __cplusplus >= 201703L /** * @brief std::optional for simple and complex types */ @@ -609,7 +610,7 @@ struct B static int optional_a_ref_to_int (std::optional &optional, int def) { return optional_a_to_int (optional, def); } static int optional_a_cptr_to_int (const std::optional *optional, int def) { return optional_a_to_int (*optional, def); } static int optional_a_ptr_to_int (std::optional optional, int def) { return optional_a_to_int (*optional, def); } - +#endif std::string addr () const;