Gcc 4.5.* build fix.
Q_COMPILER_DEFAULT_MEMBERS and Q_COMPILER_DELETE_MEMBERS are now set starting from gcc 4.6. Pre-4.6 compilers implement a non-final snapshot of N2346, hence default and delete functions are supported only if they are public. Starting from 4.6, GCC handles final version - the access modifier is not relevant. Compiler error: qsharedpointer_impl.h:717:31: error: 'QEnableSharedFromThis<T>::QEnableSharedFromThis()' declared with non-public access cannot be defaulted in the class body Change-Id: If1d3d4696f91912a09ca72bd4aa1fb07f491a0cb Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
eaf04207bd
commit
8ddaf5c741
@ -730,8 +730,6 @@
|
||||
/* C++11 features supported in GCC 4.4: */
|
||||
# define Q_COMPILER_AUTO_FUNCTION
|
||||
# define Q_COMPILER_AUTO_TYPE
|
||||
# define Q_COMPILER_DEFAULT_MEMBERS
|
||||
# define Q_COMPILER_DELETE_MEMBERS
|
||||
# define Q_COMPILER_EXTERN_TEMPLATES
|
||||
# define Q_COMPILER_UNIFORM_INIT
|
||||
# define Q_COMPILER_UNICODE_STRINGS
|
||||
@ -748,6 +746,11 @@
|
||||
# define Q_COMPILER_CLASS_ENUM
|
||||
# endif
|
||||
# if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406
|
||||
/* Pre-4.6 compilers implement a non-final snapshot of N2346, hence default and delete
|
||||
* functions are supported only if they are public. Starting from 4.6, GCC handles
|
||||
* final version - the access modifier is not relevant. */
|
||||
# define Q_COMPILER_DEFAULT_MEMBERS
|
||||
# define Q_COMPILER_DELETE_MEMBERS
|
||||
/* C++11 features supported in GCC 4.6: */
|
||||
# define Q_COMPILER_CONSTEXPR
|
||||
# define Q_COMPILER_NULLPTR
|
||||
|
@ -784,12 +784,19 @@ void tst_Compiler::cxx11_default_members()
|
||||
#ifndef Q_COMPILER_DEFAULT_MEMBERS
|
||||
QSKIP("Compiler does not support C++11 feature");
|
||||
#else
|
||||
struct DefaultMembers
|
||||
class DefaultMembers
|
||||
{
|
||||
protected:
|
||||
DefaultMembers() = default;
|
||||
public:
|
||||
DefaultMembers(int) {}
|
||||
};
|
||||
DefaultMembers dm;
|
||||
class DefaultMembersChild: public DefaultMembers
|
||||
{
|
||||
public:
|
||||
DefaultMembersChild():DefaultMembers() {};
|
||||
};
|
||||
DefaultMembersChild dm;
|
||||
Q_UNUSED(dm);
|
||||
#endif
|
||||
}
|
||||
@ -799,9 +806,11 @@ void tst_Compiler::cxx11_delete_members()
|
||||
#ifndef Q_COMPILER_DELETE_MEMBERS
|
||||
QSKIP("Compiler does not support C++11 feature");
|
||||
#else
|
||||
struct DeleteMembers
|
||||
class DeleteMembers
|
||||
{
|
||||
protected:
|
||||
DeleteMembers() = delete;
|
||||
public:
|
||||
DeleteMembers(const DeleteMembers &) = delete;
|
||||
~DeleteMembers() = delete;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user