]> git.saurik.com Git - wxWidgets.git/blame - include/wx/beforestd.h
Replace template function with template class to placate VC6.
[wxWidgets.git] / include / wx / beforestd.h
CommitLineData
df5168c4 1///////////////////////////////////////////////////////////////////////////////
233f5738 2// Name: wx/beforestd.h
df5168c4
MB
3// Purpose: #include before STL headers
4// Author: Vadim Zeitlin
5// Modified by:
6// Created: 07/07/03
7// RCS-ID: $Id$
8// Copyright: (c) 2003 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
65571936 9// Licence: wxWindows licence
df5168c4
MB
10///////////////////////////////////////////////////////////////////////////////
11
12/**
13 Unfortunately, when compiling at maximum warning level, the standard
14 headers themselves may generate warnings -- and really lots of them. So
15 before including them, this header should be included to temporarily
16 suppress the warnings and after this the header afterstd.h should be
17 included to enable them back again.
18
19 Note that there are intentionally no inclusion guards in this file, because
20 it can be included several times.
21 */
22
ffbc1990
VZ
23// VC 7.x isn't as bad as VC6 and doesn't give these warnings but eVC (which
24// defines _MSC_VER as 1201) does need to be included as it's VC6-like
25#if defined(__VISUALC__) && __VISUALC__ <= 1201
76981461
VZ
26 // these warning have to be disabled and not just temporarily disabled
27 // because they will be given at the end of the compilation of the
28 // current source and there is absolutely nothing we can do about them so
29 // disable them before warning(push) below
30
31 // 'foo': unreferenced inline function has been removed
32 #pragma warning(disable:4514)
33
34 // 'function' : function not inlined
35 #pragma warning(disable:4710)
36
37 // 'id': identifier was truncated to 'num' characters in the debug info
38 #pragma warning(disable:4786)
39
282e8e0c
VZ
40 // MSVC 5 does not have this
41 #if __VISUALC__ > 1100
00ba414f
VZ
42 // we have to disable (and reenable in afterstd.h) this one because,
43 // even though it is of level 4, it is not disabled by warning(push, 1)
44 // below for VC7.1!
45
46 // unreachable code
47 #pragma warning(disable:4702)
48
282e8e0c
VZ
49 #pragma warning(push, 1)
50 #else // VC 5
c9d59ee7
WS
51 // 'expression' : signed/unsigned mismatch
52 #pragma warning(disable:4018)
282e8e0c 53
0545fc01
VZ
54 // 'identifier' : unreferenced formal parameter
55 #pragma warning(disable:4100)
56
c9d59ee7
WS
57 // 'conversion' : conversion from 'type1' to 'type2',
58 // possible loss of data
59 #pragma warning(disable:4244)
282e8e0c 60
c9d59ee7
WS
61 // C++ language change: to explicitly specialize class template
62 // 'identifier' use the following syntax
63 #pragma warning(disable:4663)
282e8e0c 64 #endif
282e8e0c 65#endif // VC++ < 7
df5168c4 66
d6f513f8
VS
67/**
68 GCC's visibility support is broken for libstdc++ in some older versions
69 (namely Debian/Ubuntu's GCC 4.1, see
70 https://bugs.launchpad.net/ubuntu/+source/gcc-4.1/+bug/109262). We fix it
71 here by mimicking newer versions' behaviour of using default visibility
72 for libstdc++ code.
73 */
74#if defined(HAVE_VISIBILITY) && defined(HAVE_BROKEN_LIBSTDCXX_VISIBILITY)
75 #pragma GCC visibility push(default)
76#endif