<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Clang-cl + lld-link + Qt 6.11: undefined symbol QConstIterator&lt;QMetaSequence&gt; when iterating QMetaSequence::Iterable]]></title><description><![CDATA[<p dir="auto">Hi,</p>
<p dir="auto">I am encountering a linking issue with Qt 6.11.0 (msvc2022_64 official build) when using clang-cl and lld-link on Windows.</p>
<p dir="auto">The problem only appears under a specific combination of conditions involving QSequentialIterable and iterator usage on QMetaSequence::Iterable.</p>
<hr />
<h2>Environment</h2>
<ul>
<li>Qt: 6.11.0 (msvc2022_64 official binary)</li>
<li>Compiler: clang-cl 22.1.7</li>
<li>Linker: lld-link</li>
<li>Build system: CMake + Ninja</li>
<li>C++ standard: C++23</li>
<li>OS: Windows 11</li>
</ul>
<hr />
<h2>Minimal Context</h2>
<p dir="auto">This code alone works correctly:</p>
<pre><code class="language-cpp">#include &lt;QCoreApplication&gt;
#include &lt;QVariant&gt;
#include &lt;QMetaSequence&gt;

void test()
{
    QVariant v = QVariant::fromValue(QList&lt;int&gt;{1, 2, 3});
    auto iterable = v.value&lt;QMetaSequence::Iterable&gt;();

    // No iteration → OK
}
</code></pre>
<hr />
<h2>Issue Reproduction</h2>
<p dir="auto">The issue appears when iterator APIs on QMetaSequence::Iterable are used in a translation unit that includes &lt;QSequentialIterable&gt;.</p>
<h3>(1) QSequentialIterable is included</h3>
<pre><code class="language-cpp">#include &lt;QSequentialIterable&gt;
</code></pre>
<h3>(2) iterator APIs are actually used</h3>
<p dir="auto">For example:</p>
<pre><code class="language-cpp">for (auto it = iterable.constBegin(); it != iterable.constEnd(); ++it)
{
    qDebug() &lt;&lt; *it;
}
</code></pre>
<p dir="auto">or equivalent <code>begin()/end()</code> or range-based for loops.</p>
<hr />
<h2>Important Clarification</h2>
<p dir="auto">The issue does NOT occur if:</p>
<ul>
<li>&lt;QSequentialIterable&gt; is included but no iterator API is used</li>
</ul>
<p dir="auto">The issue also does NOT occur if:</p>
<ul>
<li>iterator APIs are used but &lt;QSequentialIterable&gt; is NOT included</li>
</ul>
<p dir="auto">It only triggers when:</p>
<pre><code>&lt;QSequentialIterable&gt; + iterator usage on QMetaSequence::Iterable
</code></pre>
<p dir="auto">are combined under clang-cl + lld-link.</p>
<hr />
<h2>Error</h2>
<pre><code class="language-text">lld-link: error: undefined symbol: __declspec(dllimport) public: __cdecl QConstIterator&lt;class QMetaSequence&gt;::QConstIterator&lt;class QMetaSequence&gt;(struct QConstIterator&lt;class QMetaSequence&gt; &amp;&amp;)
&gt;&gt;&gt; referenced by Test\CMakeFiles\Test.dir\Test.cpp.obj:(public: class QTaggedIterator&lt;class QtMetaContainerPrivate::SequentialConstIterator, void&gt; __cdecl QtMetaContainerPrivate::Sequence::constBegin(void) const)
&gt;&gt;&gt; referenced by Test\CMakeFiles\Test.dir\Test.cpp.obj:(public: class QTaggedIterator&lt;class QtMetaContainerPrivate::SequentialConstIterator, void&gt; __cdecl QtMetaContainerPrivate::Sequence::constBegin(void) const)
&gt;&gt;&gt; referenced by Test\CMakeFiles\Test.dir\Test.cpp.obj:(public: class QTaggedIterator&lt;class QtMetaContainerPrivate::SequentialConstIterator, void&gt; __cdecl QtMetaContainerPrivate::Sequence::constEnd(void) const)
&gt;&gt;&gt; referenced 1 more times
</code></pre>
<hr />
<h2>Observations</h2>
<ul>
<li>Works correctly with MSVC linker (link.exe)</li>
<li>Fails only with clang-cl + lld-link</li>
<li>Removing &lt;QSequentialIterable&gt; appears to resolve the issue in my environment.</li>
<li>QMetaSequence::Iterable itself works as expected in isolation</li>
<li>The issue is reproducible with iterator APIs only when QSequentialIterable is included</li>
</ul>
<hr />
<h2>Question</h2>
<p dir="auto">Is this a known ABI / export issue in Qt 6.11 MSVC builds when using clang-cl + lld-link?</p>
<p dir="auto">Is the combination of &lt;QSequentialIterable&gt; and QMetaSequence::Iterable iterator APIs expected to trigger unresolved symbols in this configuration?</p>
<p dir="auto">Any clarification or workaround would be appreciated.</p>
]]></description><link>https://forum.qt.io/topic/164820/clang-cl-lld-link-qt-6.11-undefined-symbol-qconstiterator-qmetasequence-when-iterating-qmetasequence-iterable</link><generator>RSS for Node</generator><lastBuildDate>Wed, 01 Jul 2026 21:32:21 GMT</lastBuildDate><atom:link href="https://forum.qt.io/topic/164820.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 22 Jun 2026 12:29:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Clang-cl + lld-link + Qt 6.11: undefined symbol QConstIterator&lt;QMetaSequence&gt; when iterating QMetaSequence::Iterable on Mon, 22 Jun 2026 17:39:51 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/lan-friend">@<bdi>Lan-Friend</bdi></a> said in <a href="/post/838856">Clang-cl + lld-link + Qt 6.11: undefined symbol QConstIterator&lt;QMetaSequence&gt; when iterating QMetaSequence::Iterable</a>:</p>
<blockquote>
<p dir="auto">Is this a known ABI / export issue in Qt 6.11 MSVC builds when using clang-cl + lld-link?</p>
</blockquote>
<p dir="auto">No, but clang-cl is not officially supported: <a href="https://doc.qt.io/qt-6/supported-platforms.html#windows" target="_blank" rel="noopener noreferrer nofollow ugc">https://doc.qt.io/qt-6/supported-platforms.html#windows</a><br />
You might create a <a href="http://bugreports.qt.io" target="_blank" rel="noopener noreferrer nofollow ugc">bug report</a> about it though.</p>
]]></description><link>https://forum.qt.io/post/838858</link><guid isPermaLink="true">https://forum.qt.io/post/838858</guid><dc:creator><![CDATA[Christian Ehrlicher]]></dc:creator><pubDate>Mon, 22 Jun 2026 17:39:51 GMT</pubDate></item></channel></rss>