You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Chuck Rolke (JIRA)" <ji...@apache.org> on 2015/05/12 20:43:01 UTC

[jira] [Updated] (QPID-6537) [C++ Windows] Windows compile latest warning summary

     [ https://issues.apache.org/jira/browse/QPID-6537?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Chuck Rolke updated QPID-6537:
------------------------------
    Attachment: QPID-6537-bool.patch

QPID-6537-bool.patch avoids four instances of
{noformat}
"warning C4804: '>>=' : unsafe use of type 'bool' in operation" 
{noformat}
by providing template specializations. This patch works on windows (visual studio 2012) but does *not* work on linux with g++ due to namespace issues.

Warnings are awful but is this worth chasing any further?



> [C++ Windows] Windows compile latest warning summary
> ----------------------------------------------------
>
>                 Key: QPID-6537
>                 URL: https://issues.apache.org/jira/browse/QPID-6537
>             Project: Qpid
>          Issue Type: Improvement
>          Components: C++ Broker, C++ Client
>    Affects Versions: 0.33
>         Environment: Windows Visual Studio 2012, x64
>            Reporter: Chuck Rolke
>            Priority: Minor
>         Attachments: QPID-6537-bool.patch
>
>
> Recent windows builds show some warnings in the 64-bit compiles.
> {noformat}
> 2>D:\qpid\cpp\src\qpid\types\Variant.cpp(130): warning C4146: 
>   unary minus operator applied to unsigned type, result still unsigned
> 2>D:\qpid\cpp\src\qpid\types\Variant.cpp(342) : 
>   see reference to function template instantiation 
>   'T qpid::types::VariantImpl::convertFromString<uint32_t>(void) const
> ' being compiled
> 2>          with
> 2>          [
> 2>              T=uint32_t
> 2>          ]
> {noformat}
> In this case the type is unsigned. The template applies the unary minus only to a signed type and so the warning is for code that's never executed. Still the warning is a nuisance and should be suppressed.
> {noformat}
> 6>D:\qpid\cpp\src\qpid/framing/Endian.h(44): warning C4806: 
>   '&' : unsafe operation: no value of type 'bool' promoted to type 'int' can equal the given constant
> 6>D:\qpid\cpp\src\qpid/framing/FieldValue.h(178) : 
>   see reference to function template instantiation 
>   'void qpid::framing::endian::encodeInt<T>(uint8_t *,T)' being compiled
> 6>          with
> 6>          [
> 6>              T=bool
> 6>          ]
> 6>D:\qpid\cpp\src\qpid/framing/FieldValue.h(178) : while compiling class template member function 'qpid::framing::FixedWidthIntValue<T>::FixedWidthIntValue(T)'
> 6>          with
> 6>          [
> 6>              T=bool
> 6>          ]
> 6>D:\qpid\cpp\src\qpid\framing\FieldValue.cpp(233) : see reference to function template instantiation 'qpid::framing::FixedWidthIntValue<T>::FixedWidthIntValue(T)' b
> eing compiled
> 6>          with
> 6>          [
> 6>              T=bool
> 6>          ]
> 6>D:\qpid\cpp\src\qpid\framing\FieldValue.cpp(232) : see reference to class template instantiation 'qpid::framing::FixedWidthIntValue<T>' being compiled
> 6>          with
> 6>          [
> 6>              T=bool
> 6>          ]
> 6>D:\qpid\cpp\src\qpid/framing/Endian.h(45): warning C4804: '>>=' : unsafe use of type 'bool' in operation
> 6>D:\Users\crolke\git\rh-qpid\qpid\cpp\src\qpid/framing/Endian.h(35): warning C4804: '<<=' : unsafe use of type 'bool' in operation
> 6>D:\qpid\cpp\src\qpid/framing/FieldValue.h(180) : see reference to function template instantiation 'T qpid::framing::endian::decodeInt<T>(const uint8_t *)' being co
> mpiled
> 6>          with
> 6>          [
> 6>              T=bool
> 6>          ]
> 6>D:\qpid\cpp\src\qpid/framing/FieldValue.h(180) : while compiling class template member function 'int64_t qpid::framing::FixedWidthIntValue<T>::getInt(void) const'
> 6>          with
> 6>          [
> 6>              T=bool
> 6>          ]
> 6>D:\qpid\cpp\src\qpid/framing/Endian.h(36): warning C4805: '|=' : unsafe mix of type 'bool' and type 'const uint8_t' in operation
> 6>D:\qpid\cpp\src\qpid/framing/Endian.h(36): warning C4805: '|' : unsafe mix of type 'bool' and type 'int' in operation
> {noformat}
> These are relatively recent additions. 
> {noformat}
> 7>D:\qpid\cpp\src\qpid/client/Handle.h(67): warning C4661: 'qpid::client::Handle<T>::Handle(const qpid::client::Handle<T> &)' : no suitable definition provided for explicit te
> mplate instantiation request
> 7>          with
> 7>          [
> 7>              T=qpid::client::CompletionImpl
> 7>          ]
> 7>          D:\qpid\cpp\src\qpid/client/Handle.h(61) : see declaration of 'qpid::client::Handle<T>::Handle'
> 7>          with
> 7>          [
> 7>              T=qpid::client::CompletionImpl
> 7>          ]
> 7>D:\qpid\cpp\src\qpid/client/Handle.h(67): warning C4661: 'qpid::client::Handle<T> &qpid::client::Handle<T>::operator =(const qpid::client::Handle<T> &)' : no suitable defini
> tion provided for explicit template instantiation request
> 7>          with
> 7>          [
> 7>              T=qpid::client::CompletionImpl
> 7>          ]
> 7>          D:\qpid\cpp\src\qpid/client/Handle.h(62) : see declaration of 'qpid::client::Handle<T>::operator ='
> 7>          with
> 7>          [
> 7>              T=qpid::client::CompletionImpl
> 7>          ]
> {noformat}
> Is this significant?
> {noformat}
> 9>D:\qpid\cpp\src\tests\FieldValue.cpp(33): warning C4305: 'argument' : truncation from 'double' to 'float'
> 9>D:\qpid\cpp\src\tests\FieldValue.cpp(65): warning C4305: 'argument' : truncation from 'double' to 'float'
> 9>D:\qpid\cpp\src\tests\FieldValue.cpp(68): warning C4305: 'argument' : truncation from 'double' to 'float'
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org