Merge branch 'clean-up-pre-c++98-compatibility-macro' of https://github.com/minoki/wxWidgets

Don't bother with checking for some really obsolete compilers and just assume
that C++98 keywords "explicit", "{static,const,dynamic}_cast" and support for
partial template specialization is always available.

Closes #17655.
This commit is contained in:
Vadim Zeitlin
2016-09-16 01:41:19 +02:00
58 changed files with 85 additions and 316 deletions

View File

@@ -208,53 +208,6 @@ AC_DEFUN([WX_CPP_NEW_HEADERS],
AC_LANG_RESTORE
])
dnl ---------------------------------------------------------------------------
dnl WX_CPP_EXPLICIT checks whether the C++ compiler support the explicit
dnl keyword and defines HAVE_EXPLICIT if this is the case
dnl ---------------------------------------------------------------------------
AC_DEFUN([WX_CPP_EXPLICIT],
[
AC_CACHE_CHECK([if C++ compiler supports the explicit keyword],
wx_cv_explicit,
[
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
dnl do the test in 2 steps: first check that the compiler knows about the
dnl explicit keyword at all and then verify that it really honours it
AC_TRY_COMPILE(
[
class Foo { public: explicit Foo(int) {} };
],
[
return 0;
],
[
AC_TRY_COMPILE(
[
class Foo { public: explicit Foo(int) {} };
static void TakeFoo(const Foo& foo) { }
],
[
TakeFoo(17);
return 0;
],
wx_cv_explicit=no,
wx_cv_explicit=yes
)
],
wx_cv_explicit=no
)
AC_LANG_RESTORE
])
if test "$wx_cv_explicit" = "yes"; then
AC_DEFINE(HAVE_EXPLICIT)
fi
])
dnl ---------------------------------------------------------------------------
dnl WX_CHECK_FUNCS(FUNCTIONS...,
dnl [ACTION-IF-FOUND],

80
configure vendored
View File

@@ -18988,86 +18988,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if C++ compiler supports the explicit keyword" >&5
$as_echo_n "checking if C++ compiler supports the explicit keyword... " >&6; }
if ${wx_cv_explicit+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
class Foo { public: explicit Foo(int) {} };
int
main ()
{
return 0;
;
return 0;
}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
class Foo { public: explicit Foo(int) {} };
static void TakeFoo(const Foo& foo) { }
int
main ()
{
TakeFoo(17);
return 0;
;
return 0;
}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
wx_cv_explicit=no
else
wx_cv_explicit=yes
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
else
wx_cv_explicit=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $wx_cv_explicit" >&5
$as_echo "$wx_cv_explicit" >&6; }
if test "$wx_cv_explicit" = "yes"; then
$as_echo "#define HAVE_EXPLICIT 1" >>confdefs.h
fi
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'

View File

@@ -1802,9 +1802,6 @@ if test "$HAVE_CXX11" != "1" ; then
dnl check for iostream (as opposed to iostream.h) standard header
WX_CPP_NEW_HEADERS(, AC_DEFINE(wxUSE_IOSTREAMH))
dnl check whether C++ compiler supports explicit keyword
WX_CPP_EXPLICIT
dnl the next few tests are all for C++ features and so need to be done using
dnl C++ compiler
AC_LANG_PUSH(C++)

View File

@@ -108,7 +108,7 @@ class-specific shared data. For example:
@code
MyClassRefData* GetData() const
{
return wx_static_cast(MyClassRefData*, m_refData);
return static_cast<MyClassRefData*>(m_refData);
}
@endcode

View File

@@ -105,7 +105,7 @@ public:
for ( size_t n = 0; n < src.size(); n++ )
Add(src[n]);
}
wxEXPLICIT wxSortedArrayString(wxArrayString::CompareFunction compareFunction)
explicit wxSortedArrayString(wxArrayString::CompareFunction compareFunction)
: wxSortedArrayStringBase(compareFunction)
{ }
@@ -151,7 +151,7 @@ public:
// wouldn't be needed if the 'explicit' keyword was supported by all
// compilers, or if this was protected ctor for wxSortedArrayString,
// but we're stuck with it now.
wxEXPLICIT wxArrayString(int autoSort) { Init(autoSort != 0); }
explicit wxArrayString(int autoSort) { Init(autoSort != 0); }
// C string array ctor
wxArrayString(size_t sz, const char** a);
wxArrayString(size_t sz, const wchar_t** a);
@@ -263,7 +263,7 @@ public:
public:
pointer m_ptr;
reverse_iterator() : m_ptr(NULL) { }
wxEXPLICIT reverse_iterator(pointer ptr) : m_ptr(ptr) { }
explicit reverse_iterator(pointer ptr) : m_ptr(ptr) { }
reverse_iterator(const itor& it) : m_ptr(it.m_ptr) { }
reference operator*() const { return *m_ptr; }
pointer operator->() const { return m_ptr; }
@@ -289,7 +289,7 @@ public:
public:
pointer m_ptr;
const_reverse_iterator() : m_ptr(NULL) { }
wxEXPLICIT const_reverse_iterator(pointer ptr) : m_ptr(ptr) { }
explicit const_reverse_iterator(pointer ptr) : m_ptr(ptr) { }
const_reverse_iterator(const itor& it) : m_ptr(it.m_ptr) { }
const_reverse_iterator(const reverse_iterator& it) : m_ptr(it.m_ptr) { }
reference operator*() const { return *m_ptr; }
@@ -389,7 +389,7 @@ public:
wxSortedArrayString(const wxArrayString& array) : wxArrayString(true)
{ Copy(array); }
wxEXPLICIT wxSortedArrayString(CompareFunction compareFunction)
explicit wxSortedArrayString(CompareFunction compareFunction)
: wxArrayString(true)
{ m_compareFunction = compareFunction; }
};

View File

@@ -87,7 +87,7 @@ class wxDataViewItem : public wxItemId<void*>
{
public:
wxDataViewItem() : wxItemId<void*>() { }
wxEXPLICIT wxDataViewItem(void* pItem) : wxItemId<void*>(pItem) { }
explicit wxDataViewItem(void* pItem) : wxItemId<void*>(pItem) { }
};
WX_DEFINE_ARRAY(wxDataViewItem, wxDataViewItemArray);

View File

@@ -229,23 +229,8 @@ typedef short int WXTYPE;
/* wrap it in this guard, but such cases should still be relatively rare. */
#define wxUSE_NESTED_CLASSES 1
/* check for explicit keyword support */
#ifndef HAVE_EXPLICIT
#if defined(__VISUALC__)
#define HAVE_EXPLICIT
#elif defined(__GNUC__)
#define HAVE_EXPLICIT
#elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x0520)
/* BC++ 4.52 doesn't support explicit, CBuilder 1 does */
#define HAVE_EXPLICIT
#endif
#endif /* !HAVE_EXPLICIT */
#ifdef HAVE_EXPLICIT
/* This macro is obsolete, use the 'explicit' keyword in the new code. */
#define wxEXPLICIT explicit
#else /* !HAVE_EXPLICIT */
#define wxEXPLICIT
#endif /* HAVE_EXPLICIT/!HAVE_EXPLICIT */
/* check for override keyword support */
#ifndef HAVE_OVERRIDE
@@ -273,7 +258,7 @@ typedef short int WXTYPE;
#define wxOVERRIDE override
#else /* !HAVE_OVERRIDE */
#define wxOVERRIDE
#endif /* HAVE_OVERRIDE/!HAVE_EXPLICIT */
#endif /* HAVE_OVERRIDE */
/* wxFALLTHROUGH is used to notate explicit fallthroughs in switch statements */
@@ -337,7 +322,7 @@ typedef short int WXTYPE;
#endif
/* for consistency with wxStatic/DynamicCast defined in wx/object.h */
#define wxConstCast(obj, className) wx_const_cast(className *, obj)
#define wxConstCast(obj, className) const_cast<className *>(obj)
#ifndef HAVE_STD_WSTRING
#if __cplusplus >= 201103L
@@ -458,31 +443,6 @@ typedef short int WXTYPE;
#undef wxNO_WOSTREAM
#endif /* HAVE_WOSTREAM */
/* ---------------------------------------------------------------------------- */
/* other C++ features */
/* ---------------------------------------------------------------------------- */
#ifndef HAVE_PARTIAL_SPECIALIZATION
/* be optimistic by default */
#define HAVE_PARTIAL_SPECIALIZATION
#endif
#ifdef __VISUALC__
#if __VISUALC__ < 1310
#undef HAVE_PARTIAL_SPECIALIZATION
#endif
#endif /* __VISUALC__ */
#ifndef HAVE_TEMPLATE_OVERLOAD_RESOLUTION
/* assume the compiler can use type or const expressions as template
arguments if it supports partial specialization -- except if it's a
Borland one which can't */
#if defined(HAVE_PARTIAL_SPECIALIZATION) && !defined(__BORLANDC__)
#define HAVE_TEMPLATE_OVERLOAD_RESOLUTION
#endif /* (HAVE_PARTIAL_SPECIALIZATION) && !defined(__BORLANDC__) */
#endif /* !defined(HAVE_TEMPLATE_OVERLOAD_RESOLUTION) */
/* ---------------------------------------------------------------------------- */
/* portable calling conventions macros */
/* ---------------------------------------------------------------------------- */
@@ -1284,7 +1244,7 @@ inline wxUIntPtr wxPtrToUInt(const void *p)
#pragma warning(disable: 1684)
#endif
return wx_reinterpret_cast(wxUIntPtr, p);
return reinterpret_cast<wxUIntPtr>(p);
#if defined(__VISUALC__) || defined(__INTELC__)
#pragma warning(pop)
@@ -1303,7 +1263,7 @@ inline void *wxUIntToPtr(wxUIntPtr p)
#pragma warning(disable: 171)
#endif
return wx_reinterpret_cast(void *, p);
return reinterpret_cast<void *>(p);
#if defined(__VISUALC__) || defined(__INTELC__)
#pragma warning(pop)

View File

@@ -238,7 +238,7 @@ public:
Node *GetNext() const { return m_next; }
Node *GetPrevious() const { return m_previous; }
T *GetData() const { return m_data; }
T **GetDataPtr() const { return &(wx_const_cast(nodetype*,this)->m_data); }
T **GetDataPtr() const { return &(const_cast<nodetype*>(this)->m_data); }
void SetData( T *data ) { m_data = data; }
int IndexOf() const
@@ -739,7 +739,7 @@ public:
{ return it.m_node == m_node; }
};
wxEXPLICIT wxDList(size_type n, const_reference v = value_type())
explicit wxDList(size_type n, const_reference v = value_type())
{ assign(n, v); }
wxDList(const const_iterator& first, const const_iterator& last)
{ assign(first, last); }

View File

@@ -123,9 +123,9 @@ public:
{ InitPointSize(-1); }
// These ctors specify the font size, either in points or in pixels.
wxEXPLICIT wxFontInfo(int pointSize)
explicit wxFontInfo(int pointSize)
{ InitPointSize(pointSize); }
wxEXPLICIT wxFontInfo(const wxSize& pixelSize) : m_pixelSize(pixelSize)
explicit wxFontInfo(const wxSize& pixelSize) : m_pixelSize(pixelSize)
{ Init(); }
// Setters for the various attributes. All of them return the object itself

View File

@@ -53,7 +53,7 @@ private:
class WXDLLIMPEXP_ADV wxGridCellTextEditor : public wxGridCellEditor
{
public:
wxEXPLICIT wxGridCellTextEditor(size_t maxChars = 0);
explicit wxGridCellTextEditor(size_t maxChars = 0);
virtual void Create(wxWindow* parent,
wxWindowID id,

View File

@@ -17,9 +17,9 @@
class wxTextMeasure : public wxTextMeasureBase
{
public:
wxEXPLICIT wxTextMeasure(const wxDC *dc, const wxFont *font = NULL)
explicit wxTextMeasure(const wxDC *dc, const wxFont *font = NULL)
: wxTextMeasureBase(dc, font) {}
wxEXPLICIT wxTextMeasure(const wxWindow *win, const wxFont *font = NULL)
explicit wxTextMeasure(const wxWindow *win, const wxFont *font = NULL)
: wxTextMeasureBase(win, font) {}
protected:

View File

@@ -82,7 +82,7 @@ public:
wxBitmap(const wxImage& image, int depth = wxBITMAP_SCREEN_DEPTH, double scale = 1.0);
#endif // wxUSE_IMAGE
wxBitmap(GdkPixbuf* pixbuf, int depth = 0);
wxEXPLICIT wxBitmap(const wxCursor& cursor);
explicit wxBitmap(const wxCursor& cursor);
virtual ~wxBitmap();
bool Create(int width, int height, int depth = wxBITMAP_SCREEN_DEPTH) wxOVERRIDE;

View File

@@ -29,7 +29,7 @@ public:
const wxString& name = wxGLCanvasName,
const wxPalette& palette = wxNullPalette);
wxEXPLICIT // avoid implicitly converting a wxWindow* to wxGLCanvas
explicit // avoid implicitly converting a wxWindow* to wxGLCanvas
wxGLCanvas(wxWindow *parent,
wxWindowID id = wxID_ANY,
const int *attribList = NULL,

View File

@@ -19,13 +19,13 @@ class WXDLLIMPEXP_FWD_CORE wxWindowDCImpl;
class wxTextMeasure : public wxTextMeasureBase
{
public:
wxEXPLICIT wxTextMeasure(const wxDC *dc, const wxFont *font = NULL)
explicit wxTextMeasure(const wxDC *dc, const wxFont *font = NULL)
: wxTextMeasureBase(dc, font)
{
Init();
}
wxEXPLICIT wxTextMeasure(const wxWindow *win, const wxFont *font = NULL)
explicit wxTextMeasure(const wxWindow *win, const wxFont *font = NULL)
: wxTextMeasureBase(win, font)
{
Init();

View File

@@ -29,7 +29,7 @@ public:
const wxString& name = wxGLCanvasName,
const wxPalette& palette = wxNullPalette);
wxEXPLICIT // avoid implicitly converting a wxWindow* to wxGLCanvas
explicit // avoid implicitly converting a wxWindow* to wxGLCanvas
wxGLCanvas(wxWindow *parent,
wxWindowID id = wxID_ANY,
const int *attribList = NULL,

View File

@@ -640,7 +640,7 @@ public: \
typedef VALUE_T mapped_type; \
_WX_DECLARE_PAIR( iterator, bool, Insert_Result, CLASSEXP ) \
\
wxEXPLICIT CLASSNAME( size_type hint = 100, hasher hf = hasher(), \
explicit CLASSNAME( size_type hint = 100, hasher hf = hasher(), \
key_equal eq = key_equal() ) \
: CLASSNAME##_wxImplementation_HashTable( hint, hf, eq, \
CLASSNAME##_wxImplementation_KeyEx() ) {} \

View File

@@ -123,7 +123,7 @@ CLASSEXP CLASSNAME:public CLASSNAME##_wxImplementation_HashTable \
public: \
_WX_DECLARE_PAIR( iterator, bool, Insert_Result, CLASSEXP ) \
\
wxEXPLICIT CLASSNAME( size_type hint = 100, hasher hf = hasher(), \
explicit CLASSNAME( size_type hint = 100, hasher hf = hasher(), \
key_equal eq = key_equal() ) \
: CLASSNAME##_wxImplementation_HashTable( hint, hf, eq, \
CLASSNAME##_wxImplementation_KeyEx() ) {} \

View File

@@ -21,7 +21,7 @@ class WXDLLIMPEXP_BASE wxIconLocationBase
{
public:
// ctor takes the name of the file where the icon is
wxEXPLICIT wxIconLocationBase(const wxString& filename = wxEmptyString)
explicit wxIconLocationBase(const wxString& filename = wxEmptyString)
: m_filename(filename) { }
// default copy ctor, assignment operator and dtor are ok
@@ -47,7 +47,7 @@ class WXDLLIMPEXP_BASE wxIconLocation : public wxIconLocationBase
public:
// ctor takes the name of the file where the icon is and the icons index in
// the file
wxEXPLICIT wxIconLocation(const wxString& file = wxEmptyString, int num = 0);
explicit wxIconLocation(const wxString& file = wxEmptyString, int num = 0);
// set/get the icon index
void SetIndex(int num) { m_index = num; }
@@ -70,7 +70,7 @@ wxIconLocation::wxIconLocation(const wxString& file, int num)
class WXDLLIMPEXP_BASE wxIconLocation : public wxIconLocationBase
{
public:
wxEXPLICIT wxIconLocation(const wxString& filename = wxEmptyString)
explicit wxIconLocation(const wxString& filename = wxEmptyString)
: wxIconLocationBase(filename) { }
};

View File

@@ -942,7 +942,7 @@ private:
{ return it.m_node == m_node; } \
}; \
\
wxEXPLICIT name(size_type n, const_reference v = value_type()) \
explicit name(size_type n, const_reference v = value_type()) \
{ assign(n, v); } \
name(const const_iterator& first, const const_iterator& last) \
{ assign(first, last); } \

View File

@@ -77,7 +77,7 @@ private:
class wxModalDialogHookExitGuard
{
public:
wxEXPLICIT wxModalDialogHookExitGuard(wxDialog* dialog)
explicit wxModalDialogHookExitGuard(wxDialog* dialog)
: m_dialog(dialog)
{
}

View File

@@ -98,7 +98,7 @@ public:
}
// Convert from wxCursor
wxEXPLICIT wxBitmap(const wxCursor& cursor)
explicit wxBitmap(const wxCursor& cursor)
{
(void)CopyFromCursor(cursor, wxBitmapTransparency_Auto);
}

View File

@@ -96,7 +96,7 @@ public:
// as above, but takes reference DC as first argument to take resolution,
// size, font metrics etc. from
wxEXPLICIT
explicit
wxEnhMetaFileDC(const wxDC& referenceDC,
const wxString& filename = wxEmptyString,
int width = 0, int height = 0,

View File

@@ -47,7 +47,7 @@ private:
class WXDLLIMPEXP_GL wxGLCanvas : public wxGLCanvasBase
{
public:
wxEXPLICIT // avoid implicitly converting a wxWindow* to wxGLCanvas
explicit // avoid implicitly converting a wxWindow* to wxGLCanvas
wxGLCanvas(wxWindow *parent,
const wxGLAttributes& dispAttrs,
wxWindowID id = wxID_ANY,
@@ -57,7 +57,7 @@ public:
const wxString& name = wxGLCanvasName,
const wxPalette& palette = wxNullPalette);
wxEXPLICIT
explicit
wxGLCanvas(wxWindow *parent,
wxWindowID id = wxID_ANY,
const int *attribList = NULL,

View File

@@ -285,7 +285,7 @@ private:
class WXDLLIMPEXP_CORE wxVariantDataSafeArray : public wxVariantData
{
public:
wxEXPLICIT wxVariantDataSafeArray(SAFEARRAY* value = NULL)
explicit wxVariantDataSafeArray(SAFEARRAY* value = NULL)
{
m_value = value;
}

View File

@@ -157,7 +157,7 @@ template <wxUIntPtr INVALID_VALUE = (wxUIntPtr)INVALID_HANDLE_VALUE>
class AutoHANDLE
{
public:
wxEXPLICIT AutoHANDLE(HANDLE handle = InvalidHandle()) : m_handle(handle) { }
explicit AutoHANDLE(HANDLE handle = InvalidHandle()) : m_handle(handle) { }
bool IsOk() const { return m_handle != InvalidHandle(); }
operator HANDLE() const { return m_handle; }

View File

@@ -25,7 +25,7 @@ public:
{
}
wxEXPLICIT wxCOMPtr(T* ptr)
explicit wxCOMPtr(T* ptr)
: m_ptr(ptr)
{
if ( m_ptr )

View File

@@ -13,7 +13,7 @@
class wxPipeInputStream : public wxInputStream
{
public:
wxEXPLICIT wxPipeInputStream(HANDLE hInput);
explicit wxPipeInputStream(HANDLE hInput);
virtual ~wxPipeInputStream();
// returns true if the pipe is still opened
@@ -34,7 +34,7 @@ protected:
class wxPipeOutputStream: public wxOutputStream
{
public:
wxEXPLICIT wxPipeOutputStream(HANDLE hOutput);
explicit wxPipeOutputStream(HANDLE hOutput);
virtual ~wxPipeOutputStream() { Close(); }
bool Close();

View File

@@ -19,13 +19,13 @@
class wxTextMeasure : public wxTextMeasureBase
{
public:
wxEXPLICIT wxTextMeasure(const wxDC *dc, const wxFont *font = NULL)
explicit wxTextMeasure(const wxDC *dc, const wxFont *font = NULL)
: wxTextMeasureBase(dc, font)
{
Init();
}
wxEXPLICIT wxTextMeasure(const wxWindow *win, const wxFont *font = NULL)
explicit wxTextMeasure(const wxWindow *win, const wxFont *font = NULL)
: wxTextMeasureBase(win, font)
{
Init();

View File

@@ -268,7 +268,7 @@ class wxObjectDataPtr
public:
typedef T element_type;
wxEXPLICIT wxObjectDataPtr(T *ptr = NULL) : m_ptr(ptr) {}
explicit wxObjectDataPtr(T *ptr = NULL) : m_ptr(ptr) {}
// copy ctor
wxObjectDataPtr(const wxObjectDataPtr<T> &tocopy)

View File

@@ -21,7 +21,6 @@
#define __DARWIN__ 1
#define wx_USE_NANOX 0
#define HAVE_EXPLICIT 1
#define HAVE_VA_COPY 1
#define HAVE_VARIADIC_MACROS 1
#define HAVE_STD_WSTRING 1

View File

@@ -24,7 +24,7 @@ public:
// class is supposed to create the buttons and layout everything.
//
// Takes ownership of the adaptor pointer.
wxEXPLICIT wxAddRemoveImplBase(wxAddRemoveAdaptor* adaptor,
explicit wxAddRemoveImplBase(wxAddRemoveAdaptor* adaptor,
wxAddRemoveCtrl* WXUNUSED(parent),
wxWindow* ctrlItems)
: m_adaptor(adaptor)
@@ -105,7 +105,7 @@ private:
class wxAddRemoveImplWithButtons : public wxAddRemoveImplBase
{
public:
wxEXPLICIT wxAddRemoveImplWithButtons(wxAddRemoveAdaptor* adaptor,
explicit wxAddRemoveImplWithButtons(wxAddRemoveAdaptor* adaptor,
wxAddRemoveCtrl* parent,
wxWindow* ctrlItems)
: wxAddRemoveImplBase(adaptor, parent, ctrlItems)

View File

@@ -19,7 +19,7 @@
class wxFDIOEventLoopSourceHandler : public wxFDIOHandler
{
public:
wxEXPLICIT wxFDIOEventLoopSourceHandler(wxEventLoopSourceHandler* handler)
explicit wxFDIOEventLoopSourceHandler(wxEventLoopSourceHandler* handler)
: m_handler(handler)
{
}

View File

@@ -32,7 +32,7 @@ public:
// Convert from wxIcon / wxCursor
wxBitmap(const wxIcon& icon) { CopyFromIcon(icon); }
wxEXPLICIT wxBitmap(const wxCursor& cursor);
explicit wxBitmap(const wxCursor& cursor);
static void InitStandardHandlers();

View File

@@ -31,7 +31,7 @@ private:
class WXDLLIMPEXP_GL wxGLCanvas : public wxGLCanvasBase
{
public:
wxEXPLICIT // avoid implicitly converting a wxWindow* to wxGLCanvas
explicit // avoid implicitly converting a wxWindow* to wxGLCanvas
wxGLCanvas(wxWindow *parent,
wxWindowID id = wxID_ANY,
const int *attribList = NULL,

View File

@@ -24,8 +24,8 @@ class wxScopedArray
public:
typedef T element_type;
wxEXPLICIT wxScopedArray(T * array = NULL) : m_array(array) { }
wxEXPLICIT wxScopedArray(size_t count) : m_array(new T[count]) { }
explicit wxScopedArray(T * array = NULL) : m_array(array) { }
explicit wxScopedArray(size_t count) : m_array(new T[count]) { }
~wxScopedArray() { delete [] m_array; }
@@ -77,7 +77,7 @@ private: \
name & operator=(name const &); \
\
public: \
wxEXPLICIT name(T * p = NULL) : m_ptr(p) \
explicit name(T * p = NULL) : m_ptr(p) \
{} \
\
~name(); \

View File

@@ -40,7 +40,7 @@ class wxScopedPtr
public:
typedef T element_type;
wxEXPLICIT wxScopedPtr(T * ptr = NULL) : m_ptr(ptr) { }
explicit wxScopedPtr(T * ptr = NULL) : m_ptr(ptr) { }
~wxScopedPtr() { wxCHECKED_DELETE(m_ptr); }
@@ -123,7 +123,7 @@ private: \
name & operator=(name const &); \
\
public: \
wxEXPLICIT name(T * ptr = NULL) \
explicit name(T * ptr = NULL) \
: m_ptr(ptr) { } \
\
~name(); \

View File

@@ -64,7 +64,7 @@ enum wxScrollbarVisibility
class WXDLLIMPEXP_CORE wxAnyScrollHelperBase
{
public:
wxEXPLICIT wxAnyScrollHelperBase(wxWindow* win);
explicit wxAnyScrollHelperBase(wxWindow* win);
virtual ~wxAnyScrollHelperBase() {}
// Disable use of keyboard keys for scrolling. By default cursor movement

View File

@@ -23,7 +23,7 @@ class wxSharedPtr
public:
typedef T element_type;
wxEXPLICIT wxSharedPtr( T* ptr = NULL )
explicit wxSharedPtr( T* ptr = NULL )
: m_ref(NULL)
{
if (ptr)
@@ -31,7 +31,7 @@ public:
}
template<typename Deleter>
wxEXPLICIT wxSharedPtr(T* ptr, Deleter d)
explicit wxSharedPtr(T* ptr, Deleter d)
: m_ref(NULL)
{
if (ptr)

View File

@@ -362,17 +362,12 @@ struct wxFormatStringSpecifier
//
// Furthermore, if the compiler doesn't have partial template
// specialization, we didn't cover pointers either.
#ifdef HAVE_PARTIAL_SPECIALIZATION
enum { value = wxFormatString::Arg_Int };
#else
enum { value = wxFormatString::Arg_Int | wxFormatString::Arg_Pointer };
#endif
};
#endif // HAVE_TR1_TYPE_TRAITS/!HAVE_TR1_TYPE_TRAITS
#ifdef HAVE_PARTIAL_SPECIALIZATION
template<typename T>
struct wxFormatStringSpecifier<T*>
{
@@ -384,7 +379,6 @@ struct wxFormatStringSpecifier<const T*>
{
enum { value = wxFormatString::Arg_Pointer };
};
#endif // !HAVE_PARTIAL_SPECIALIZATION
#define wxFORMAT_STRING_SPECIFIER(T, arg) \

View File

@@ -15,7 +15,7 @@
class wxPipeInputStream : public wxFileInputStream
{
public:
wxEXPLICIT wxPipeInputStream(int fd) : wxFileInputStream(fd) { }
explicit wxPipeInputStream(int fd) : wxFileInputStream(fd) { }
// return true if the pipe is still opened
bool IsOpened() const { return !Eof(); }

View File

@@ -145,7 +145,7 @@ public:
{
public:
reverse_iterator() : m_ptr(NULL) { }
wxEXPLICIT reverse_iterator(iterator it) : m_ptr(it) { }
explicit reverse_iterator(iterator it) : m_ptr(it) { }
reverse_iterator(const reverse_iterator& it) : m_ptr(it.m_ptr) { }
reference operator*() const { return *m_ptr; }
@@ -189,7 +189,7 @@ public:
{
public:
const_reverse_iterator() : m_ptr(NULL) { }
wxEXPLICIT const_reverse_iterator(const_iterator it) : m_ptr(it) { }
explicit const_reverse_iterator(const_iterator it) : m_ptr(it) { }
const_reverse_iterator(const reverse_iterator& it) : m_ptr(it.m_ptr) { }
const_reverse_iterator(const const_reverse_iterator& it) : m_ptr(it.m_ptr) { }

View File

@@ -581,7 +581,7 @@ public:
public:
// Notice that window can be NULL here, for convenience. In this case
// this class simply doesn't do anything.
wxEXPLICIT ChildrenRepositioningGuard(wxWindowBase* win)
explicit ChildrenRepositioningGuard(wxWindowBase* win)
: m_win(win),
m_callEnd(win && win->BeginRepositioningChildren())
{

View File

@@ -35,7 +35,7 @@ class wxWindowPtr : public wxSharedPtr<T>
public:
typedef T element_type;
wxEXPLICIT wxWindowPtr(element_type* win)
explicit wxWindowPtr(element_type* win)
: wxSharedPtr<T>(win, wxPrivate::wxWindowDeleter())
{
}

View File

@@ -26,7 +26,7 @@ public:
const wxString& name = wxGLCanvasName,
const wxPalette& palette = wxNullPalette);
wxEXPLICIT // avoid implicitly converting a wxWindow* to wxGLCanvas
explicit // avoid implicitly converting a wxWindow* to wxGLCanvas
wxGLCanvas(wxWindow *parent,
wxWindowID id = wxID_ANY,
const int *attribList = NULL,

View File

@@ -1699,17 +1699,6 @@ template <typename T> wxDELETEA(T*& array);
*/
#define wxDEPRECATED_BUT_USED_INTERNALLY_INLINE(func, body)
/**
@c wxEXPLICIT is a macro which expands to the C++ @c explicit keyword if
the compiler supports it or nothing otherwise. Thus, it can be used even in
the code which might have to be compiled with an old compiler without
support for this language feature but still take advantage of it when it is
available.
@header{wx/defs.h}
*/
#define wxEXPLICIT
/**
@c wxOVERRIDE expands to the C++11 @c override keyword if it's supported by
the compiler or nothing otherwise.

View File

@@ -789,39 +789,6 @@ public:
*/
#define wxIMPLEMENT_CLASS2( className, baseClassName1, baseClassName2 )
/**
Same as @c const_cast<T>(x) if the compiler supports const cast or @c (T)x for
old compilers. Unlike wxConstCast(), the cast it to the type @c T and not to
<tt>T *</tt> and also the order of arguments is the same as for the standard cast.
@header{wx/defs.h}
@see wx_reinterpret_cast(), wx_static_cast()
*/
#define wx_const_cast(T, x)
/**
Same as @c reinterpret_cast<T>(x) if the compiler supports reinterpret cast or
@c (T)x for old compilers.
@header{wx/defs.h}
@see wx_const_cast(), wx_static_cast()
*/
#define wx_reinterpret_cast(T, x)
/**
Same as @c static_cast<T>(x) if the compiler supports static cast or @c (T)x for
old compilers. Unlike wxStaticCast(), there are no checks being done and
the meaning of the macro arguments is exactly the same as for the standard
static cast, i.e. @a T is the full type name and star is not appended to it.
@header{wx/defs.h}
@see wx_const_cast(), wx_reinterpret_cast(), wx_truncate_cast()
*/
#define wx_static_cast(T, x)
/**
This case doesnt correspond to any standard cast but exists solely to make
casts which possibly result in a truncation of an integer value more
@@ -837,7 +804,7 @@ public:
@header{wx/defs.h}
@see wx_const_cast(), wxDynamicCast(), wxStaticCast()
@see wxDynamicCast(), wxStaticCast()
*/
#define wxConstCast( ptr, classname )
@@ -889,7 +856,7 @@ public:
@header{wx/object.h}
@see wx_static_cast(), wxDynamicCast(), wxConstCast()
@see wxDynamicCast(), wxConstCast()
*/
#define wxStaticCast( ptr, classname )

View File

@@ -89,7 +89,7 @@ public:
// wxMSW is one of the platforms where the generic implementation
// of wxFilePickerCtrl is used...
wxButton *pButt = wx_static_cast(wxButton*, myFilePickerCtrl->GetPickerCtrl());
wxButton *pButt = static_cast<wxButton*>(myFilePickerCtrl->GetPickerCtrl());
if (pButt)
pButt->SetLabel("Custom browse string");
#endif

View File

@@ -26,7 +26,7 @@ public:
Creates shared pointer from the raw pointer @a ptr and takes ownership
of it.
*/
wxEXPLICIT wxSharedPtr(T* ptr = NULL);
explicit wxSharedPtr(T* ptr = NULL);
/**
Constructor.
@@ -42,7 +42,7 @@ public:
@since 3.0
*/
template<typename Deleter>
wxEXPLICIT wxSharedPtr(T* ptr, Deleter d);
explicit wxSharedPtr(T* ptr, Deleter d);
/**
Copy constructor.

View File

@@ -1368,7 +1368,7 @@ void MyFrame::AddRemove(wxCommandEvent& WXUNUSED(event))
class ListBoxAdaptor : public wxAddRemoveAdaptor
{
public:
wxEXPLICIT ListBoxAdaptor(wxListBox* lbox)
explicit ListBoxAdaptor(wxListBox* lbox)
: m_lbox(lbox)
{
}

View File

@@ -262,7 +262,7 @@ void ClassListDialog::InitControls()
bool ClassListDialog::IsToDiscard(const wxString &classname) const
{
wxCheckBox *cb = wx_static_cast(wxCheckBox*, FindWindow(ID_SHOW_ONLY_XTI));
wxCheckBox *cb = static_cast<wxCheckBox*>(FindWindow(ID_SHOW_ONLY_XTI));
if (!cb || !cb->IsChecked())
return false;
@@ -288,7 +288,7 @@ void ClassListDialog::UpdateFilterText()
void ClassListDialog::UpdateClassInfo(const wxString &itemName)
{
wxString classname = itemName.BeforeFirst(wxT(' '));
wxCheckBox *cb = wx_static_cast(wxCheckBox*, FindWindow(ID_SHOW_PROPERTIES_RECURSIVELY));
wxCheckBox *cb = static_cast<wxCheckBox*>(FindWindow(ID_SHOW_PROPERTIES_RECURSIVELY));
m_pTextCtrl->SetValue(
DumpClassInfo(wxClassInfo::FindClass(classname), cb->IsChecked()));

View File

@@ -712,11 +712,6 @@
#define wxUSE_CRASHREPORT 0
/* --- end MSW options --- */
/*
* Define if your compiler supports the explicit keyword
*/
#undef HAVE_EXPLICIT
/*
* Define if your compiler has C99 va_copy
*/

View File

@@ -781,11 +781,6 @@ typedef pid_t GPid;
/* --- end MSW options --- */
/*
* Define if your compiler supports the explicit keyword
*/
#define HAVE_EXPLICIT 1
/*
* Define if your compiler has C99 va_copy
*/

View File

@@ -82,7 +82,7 @@ wxDEFINE_SCOPED_PTR(wxAppConsole, wxAppPtrBase)
class wxAppPtr : public wxAppPtrBase
{
public:
wxEXPLICIT wxAppPtr(wxAppConsole *ptr = NULL) : wxAppPtrBase(ptr) { }
explicit wxAppPtr(wxAppConsole *ptr = NULL) : wxAppPtrBase(ptr) { }
~wxAppPtr()
{
if ( get() )

View File

@@ -2022,7 +2022,7 @@ namespace
class ValidationTraverserBase
{
public:
wxEXPLICIT ValidationTraverserBase(wxWindowBase* win)
explicit ValidationTraverserBase(wxWindowBase* win)
: m_win(static_cast<wxWindow*>(win))
{
}
@@ -2084,7 +2084,7 @@ bool wxWindowBase::Validate()
class ValidateTraverser : public ValidationTraverserBase
{
public:
wxEXPLICIT ValidateTraverser(wxWindowBase* win)
explicit ValidateTraverser(wxWindowBase* win)
: ValidationTraverserBase(win)
{
}
@@ -2112,7 +2112,7 @@ bool wxWindowBase::TransferDataToWindow()
class DataToWindowTraverser : public ValidationTraverserBase
{
public:
wxEXPLICIT DataToWindowTraverser(wxWindowBase* win)
explicit DataToWindowTraverser(wxWindowBase* win)
: ValidationTraverserBase(win)
{
}

View File

@@ -83,7 +83,7 @@ gtk_changed(GtkSpinButton* spinbutton, wxSpinCtrl* win)
class wxSpinCtrlEventDisabler
{
public:
wxEXPLICIT wxSpinCtrlEventDisabler(wxSpinCtrlGTKBase* spin)
explicit wxSpinCtrlEventDisabler(wxSpinCtrlGTKBase* spin)
: m_spin(spin)
{
m_spin->GtkDisableEvents();

View File

@@ -490,7 +490,7 @@ void wxRibbonBar::SetTabCtrlMargins(int left, int right)
struct PageComparedBySmallWidthAsc
{
wxEXPLICIT PageComparedBySmallWidthAsc(wxRibbonPageTabInfo* page)
explicit PageComparedBySmallWidthAsc(wxRibbonPageTabInfo* page)
: m_page(page)
{
}

View File

@@ -671,7 +671,7 @@ bool wxGLCanvasX11::InitXVisualInfo(const wxGLAttributes& dispAttrs,
{
*pFBC = NULL;
*pXVisual = glXChooseVisual(dpy, DefaultScreen(dpy),
wx_const_cast(int*, attrsListGLX) );
const_cast<int*>(attrsListGLX) );
}
return *pXVisual != NULL;

View File

@@ -302,7 +302,7 @@ void ExecTestCase::TestProcess()
class TestAsyncProcess : public wxProcess
{
public:
wxEXPLICIT TestAsyncProcess()
explicit TestAsyncProcess()
{
}