[LyX/master] Use `std::any` when compiler supports C++17 or later

Yuriy Skalko yuriy.skalko at gmail.com
Sat Nov 21 18:03:29 UTC 2020


commit 8dfe07b5b54e5ba4147545407cdc1f422e753861
Author: Yuriy Skalko <yuriy.skalko at gmail.com>
Date:   Sat Nov 21 16:27:13 2020 +0200

    Use `std::any` when compiler supports C++17 or later
---
 src/insets/ExternalTransforms.cpp |    4 ++--
 src/insets/ExternalTransforms.h   |    7 +++----
 src/support/Makefile.am           |    1 +
 src/support/any.h                 |   23 +++++++++++++++++++++++
 4 files changed, 29 insertions(+), 6 deletions(-)

diff --git a/src/insets/ExternalTransforms.cpp b/src/insets/ExternalTransforms.cpp
index 4f85f9d..9ff5772 100644
--- a/src/insets/ExternalTransforms.cpp
+++ b/src/insets/ExternalTransforms.cpp
@@ -326,13 +326,13 @@ string const sanitizeLatexOption(string const & input)
 namespace {
 
 template <typename Factory, typename Data, typename Transformer>
-void extractIt(boost::any const & any_factory,
+void extractIt(any const & any_factory,
 	       Data const & data, Transformer & transformer)
 {
 	if (any_factory.type() != typeid(Factory))
 		return;
 
-	Factory factory = boost::any_cast<Factory>(any_factory);
+	Factory factory = any_cast<Factory>(any_factory);
 	if (factory)
 		transformer = factory(data);
 }
diff --git a/src/insets/ExternalTransforms.h b/src/insets/ExternalTransforms.h
index 8b22f62..62e3342 100644
--- a/src/insets/ExternalTransforms.h
+++ b/src/insets/ExternalTransforms.h
@@ -14,11 +14,10 @@
 
 #include "graphics/GraphicsParams.h"
 
+#include "support/any.h"
 #include "support/Length.h"
 #include "support/unique_ptr.h"
 
-#include <boost/any.hpp>
-
 #include <functional>
 #include <map>
 #include <memory>
@@ -339,7 +338,7 @@ public:
 	 */
 	template <typename Factory>
 	TransformStore(TransformID id_, Factory const & factory)
-		: id(id_), any_factory(boost::any(factory)) {}
+		: id(id_), any_factory(any(factory)) {}
 
 	typedef TransformCommand::ptr_type ComPtr;
 	typedef TransformOption::ptr_type  OptPtr;
@@ -353,7 +352,7 @@ public:
 
 private:
 	TransformID id;
-	boost::any any_factory;
+	any any_factory;
 };
 
 } // namespace external
diff --git a/src/support/Makefile.am b/src/support/Makefile.am
index 45d30b8..4ff8618 100644
--- a/src/support/Makefile.am
+++ b/src/support/Makefile.am
@@ -35,6 +35,7 @@ liblyxsupport_a_SOURCES = \
 	FileMonitor.h \
 	FileMonitor.cpp \
 	RandomAccessList.h \
+	any.h \
 	bind.h \
 	Cache.h \
 	Changer.h \
diff --git a/src/support/any.h b/src/support/any.h
new file mode 100644
index 0000000..e8f6a11
--- /dev/null
+++ b/src/support/any.h
@@ -0,0 +1,23 @@
+// -*- C++ -*-
+/**
+ * \file any.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Yuriy Skalko
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
+#ifndef LYX_ANY_H
+#define LYX_ANY_H
+
+#if __cplusplus >= 201703L
+	#include <any>
+	namespace lyx { using std::any; }
+#else
+	#include <boost/any.hpp>
+	namespace lyx { using boost::any; }
+#endif
+
+#endif // LYX_ANY_H


More information about the lyx-cvs mailing list