src/model.h

changeset 218
63125c36de73
parent 212
27259810da6d
child 232
8efa3a33172e
--- a/src/model.h	Tue Jun 14 17:55:50 2022 +0300
+++ b/src/model.h	Tue Jun 14 19:50:31 2022 +0300
@@ -47,36 +47,6 @@
 
 struct Empty {};
 
-template<typename T, typename R>
-struct transfer_reference
-{
-	using type = std::remove_reference_t<R>;
-};
-
-template<typename T, typename R>
-struct transfer_reference<T&, R>
-{
-	using type = std::remove_reference_t<R>&;
-};
-
-template<typename T, typename R>
-struct transfer_reference<const T&, R>
-{
-	using type = const std::remove_reference_t<R>&;
-};
-
-template<typename T, typename R>
-struct transfer_reference<T&&, R>
-{
-	using type = std::remove_reference_t<R>&&;
-};
-
-template<typename T, typename R>
-using transfer_reference_t = typename transfer_reference<T, R>::type;
-static_assert(std::is_same_v<transfer_reference_t<int, char>, char>);
-static_assert(std::is_same_v<transfer_reference_t<int&, char>, char&>);
-static_assert(std::is_same_v<transfer_reference_t<int&&, char>, char&&>);
-
 using ModelElement = std::variant<
 	Colored<SubfileReference>,
 	Colored<LineSegment>,
@@ -142,25 +112,25 @@
 constexpr void visitPoints(Fn&& func, T&& element)
 {
 	visitPolygon<void>(
-		[&func](transfer_reference_t<T&&, LineSegment> edge)
+		[&func](transfer_cvref_t<T&&, LineSegment> edge)
 		{
 			func(edge.p1);
 			func(edge.p2);
 		},
-		[&func](transfer_reference_t<T&&, Triangle>& tri)
+		[&func](transfer_cvref_t<T&&, Triangle>& tri)
 		{
 			func(tri.p1);
 			func(tri.p2);
 			func(tri.p3);
 		},
-		[&func](transfer_reference_t<T&&, Quadrilateral>& quad)
+		[&func](transfer_cvref_t<T&&, Quadrilateral>& quad)
 		{
 			func(quad.p1);
 			func(quad.p2);
 			func(quad.p3);
 			func(quad.p4);
 		},
-		[&func](transfer_reference_t<T&&, ConditionalEdge>& cedge)
+		[&func](transfer_cvref_t<T&&, ConditionalEdge>& cedge)
 		{
 			func(cedge.p1);
 			func(cedge.p2);

mercurial