diff --git a/src/queue/Queue.cxx b/src/queue/Queue.cxx
index 31c84de53..719732cc3 100644
--- a/src/queue/Queue.cxx
+++ b/src/queue/Queue.cxx
@@ -19,6 +19,7 @@
 
 #include "Queue.hxx"
 #include "song/DetachedSong.hxx"
+#include "song/LightSong.hxx"
 
 #include <algorithm>
 
@@ -38,6 +39,15 @@ Queue::~Queue() noexcept
 	delete[] order;
 }
 
+LightSong
+Queue::GetLight(unsigned position) const noexcept
+{
+	assert(position < length);
+
+	LightSong song{Get(position)};
+	return song;
+}
+
 int
 Queue::GetNextOrder(unsigned _order) const noexcept
 {
diff --git a/src/queue/Queue.hxx b/src/queue/Queue.hxx
index b698bc767..a6e4ceffa 100644
--- a/src/queue/Queue.hxx
+++ b/src/queue/Queue.hxx
@@ -29,6 +29,7 @@
 #include <cstdint>
 #include <utility>
 
+struct LightSong;
 class DetachedSong;
 
 /**
@@ -200,6 +201,11 @@ struct Queue {
 		return *items[position].song;
 	}
 
+	/**
+	 * Like Get(), but return a #LightSong instance.
+	 */
+	LightSong GetLight(unsigned position) const noexcept;
+
 	/**
 	 * Returns the song at the specified order number.
 	 */
diff --git a/src/queue/Selection.cxx b/src/queue/Selection.cxx
index 090ad0274..4be13c033 100644
--- a/src/queue/Selection.cxx
+++ b/src/queue/Selection.cxx
@@ -28,7 +28,7 @@ QueueSelection::MatchPosition(const Queue &queue,
 			      unsigned position) const noexcept
 {
 	if (filter != nullptr) {
-		const LightSong song{queue.Get(position)};
+		const auto song = queue.GetLight(position);
 		if (!filter->Match(song))
 			return false;
 	}
diff --git a/test/test_queue_priority.cxx b/test/test_queue_priority.cxx
index b6eaf800a..8fdab8c90 100644
--- a/test/test_queue_priority.cxx
+++ b/test/test_queue_priority.cxx
@@ -1,5 +1,6 @@
 #include "queue/Queue.hxx"
 #include "song/DetachedSong.hxx"
+#include "song/LightSong.hxx"
 
 #include <gtest/gtest.h>
 
@@ -8,6 +9,11 @@
 Tag::Tag(const Tag &) noexcept {}
 void Tag::Clear() noexcept {}
 
+DetachedSong::operator LightSong() const noexcept
+{
+	return {uri.c_str(), tag};
+}
+
 static void
 check_descending_priority(const Queue *queue,
 			  unsigned start_order)