wtf?!

error: narrowing conversion of ‘2150115144u’ from ‘unsigned int’ to ‘TInt32 {aka long int}’ inside { } [-Wnarrowing]
const TUid KUidCustomCrossCheck={KUidCustomCrossCheckValue};

warning: narrowing conversion of ‘aUid’ from ‘TInt {aka int}’ to ‘TUint32 {aka long unsigned int}’ inside { } [-Wnarrowing]
{TUid uid={aUid};return uid;}

Change in e32cmn.h TUid member type iUid in c++14 and errors became varnings! Code:

#if (__cplusplus >= 201402L)
TUint32 iUid; // warnings
#else
TInt32 iUid; // errors
#endif

 

 

wtf?!

Extending S60_5th_Edition_SDK_v1.0 II

gcce.h not emits warnings now.

Whats done:

1) copied content from symcpp

2) removed EXPORT_C from operators

3) post-operators __NO_THROW in c++11 changed to noexcept:

#if __cplusplus == 199711L || __GNUC__ < 3 // last for rss preprocessor
#define __NO_THROW throw ()
#define __THROW(t) throw (t)
#elif  __cplusplus == 201103L ||  __cplusplus == 201402L
#define __NO_THROW noexcept
// #define __THROW(t) // not needed for new/delete operators in C++11/14
#else
#error “Unknown c++ standart! Please add fix gcce.h at line 85”
#endif

4) get rid from stupid warnings:

‘void* operator new(unsigned int, unsigned int)’ is a usual (non-placement) deallocation function in C++14:

#if __GNUC__ > 4
/*get rid from endless warnings
because from C++14 :
The placement form void* operator new(size_t, size_t)
is not allowed because the matching signature of the
deallocation function, void operator delete(void*, size_t),
is a usual (not placement) deallocation function.*/
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored “-Wc++14-compat”
#endif

Extending S60_5th_Edition_SDK_v1.0 II