aboutsummaryrefslogtreecommitdiff
path: root/x11/qt4-opengl/files/patch-src__corelib__tools__qiterator.h
blob: 9a2a2ca2daa76fbd22b41dcf6476f9d576ebd772 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
commit 5210d47aa66214e3cb16f394d0510a91f770c1b1
Author: Raphael Kubo da Costa <rakuco@FreeBSD.org>
Date:   Mon Jul 16 23:39:07 2012 -0300

    Only forward-declare some std classes if QT_NO_STL is defined.
    
    If that is not done, building with clang, libc++ and C++11 support
    does not work: libc++ defines the iterator tag classes in an inline
    namespace inside the std namespace, and forward-declaring those
    classes inside the std namespace itself in qiterator.h causes an
    ambiguity that clang solves by choosing the incomplete-declared class
    declared in the enclosing std namespace.
    
    This is probably the "clang build problem" reported in commit
    19e2b4d6eb733d9fd4eb69c0622b699fd08a3203 to qtbase, which cannot be
    directly cherry-picked without breaking other classes due to QT_NO_STL
    still being present in Qt 4.
    
    Change-Id: I26e33915347d3f94ef2e10b68fca6b2099ec9491
    Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>

diff --git a/src/corelib/tools/qiterator.h b/src/corelib/tools/qiterator.h
index 0747940..b9d8da6 100644
--- ./src/corelib/tools/qiterator.h
+++ ./src/corelib/tools/qiterator.h
@@ -46,10 +46,12 @@
 
 QT_BEGIN_HEADER
 
+#ifdef QT_NO_STL
 namespace std {
     struct bidirectional_iterator_tag;
     struct random_access_iterator_tag;
 }
+#endif
 
 QT_BEGIN_NAMESPACE