Make nearly all bool operators explicit.

These are a bit dangerous because the casting can happen in quite
unexpected circumstances and lead to undesirable comparison results.
This commit is contained in:
Johanna Amann 2018-01-18 14:02:03 -08:00
parent 5ed5587b5c
commit 41285abea5
7 changed files with 7 additions and 7 deletions

View file

@ -102,7 +102,7 @@ public:
EventHandler* Ptr() { return handler; }
operator bool() const { return handler && *handler; }
explicit operator bool() const { return handler && *handler; }
EventHandler* operator->() { return handler; }
const EventHandler* operator->() const { return handler; }

View file

@ -61,7 +61,7 @@ public:
* and not yet initialized w/ Set().
* TODO: this would be better as an "explicit" conversion operator (C++11)
*/
operator bool() const
explicit operator bool() const
{ return initialized; }
/**

View file

@ -46,7 +46,7 @@ public:
* "safe bool" idiom (not necessary if "explicit" is available),
* otherwise this may allow nonsense/undesired comparison operations.
*/
operator bool() const { return *this != Tag(); }
explicit operator bool() const { return *this != Tag(); }
/**
* Assignment operator.

View file

@ -8,7 +8,7 @@ refine flow SIP_Flow += {
%init{
content_length = 0;
build_headers = (sip_all_headers != 0);
build_headers = bool(sip_all_headers);
%}
function get_content_length(): int

View file

@ -448,7 +448,7 @@ bool Manager::IsDisabled(analyzer::Tag tag)
if ( ! disabled )
disabled = internal_const_val("Files::disable")->AsTableVal();
Val* index = new Val(tag, TYPE_COUNT);
Val* index = new Val(bool(tag), TYPE_COUNT);
Val* yield = disabled->Lookup(index);
Unref(index);

View file

@ -46,7 +46,7 @@ public:
* otherwise this may allow nonsense/undesired comparison operations.
*
*/
operator bool() const { return *this != Tag(); }
explicit operator bool() const { return *this != Tag(); }
/**
* Assignment operator.

View file

@ -78,7 +78,7 @@ struct VersionNumber {
/**
* Returns true if the version is set to a non-negative value.
*/
operator bool() const { return major >= 0 && minor >= 0; }
explicit operator bool() const { return major >= 0 && minor >= 0; }
};
/**