Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Jan 25, 2016, 9:33:11 PM (8 years ago)
Author:
muemart
Message:

Constexpr for some util things

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/trunk/src/libraries/util/tribool.h

    r8729 r11096  
    1010// so that (dontcare == dontcare).
    1111// Also removed all logic operators except for == and !=
     12// Added C++11 constexpr
    1213
    1314
     
    2223 * The type of the 'dontcare' keyword.
    2324 */
    24 struct dontcare_keyword_t { };
     25struct dontcare_keyword_t {};
    2526
    2627/**
    2728 * \brief Keyword for the dontcare tribool value
    2829 */
    29 const dontcare_keyword_t dontcare = dontcare_keyword_t();
     30constexpr dontcare_keyword_t dontcare = dontcare_keyword_t();
    3031
    3132/**
     
    4344   * \throws nothrow
    4445   */
    45   tribool() : value(false_value) {}
     46  constexpr tribool() : value(false_value) {}
    4647
    4748  /**
     
    5152   * \throws nothrow
    5253   */
    53   tribool(bool value) : value(value? true_value : false_value) {}
     54  constexpr tribool(bool value) : value(value? true_value : false_value) {}
    5455
    5556  /**
     
    5859   * \throws nothrow
    5960   */
    60   tribool(dontcare_keyword_t) : value(dontcare_value) {}
     61  constexpr tribool(dontcare_keyword_t) : value(dontcare_value) {}
    6162
    6263  /**
     
    6667   * \throws nothrow
    6768   */
    68   inline bool operator==(tribool y)
     69  constexpr bool operator==(tribool y) const
    6970  {
    7071    return (this->value == y.value);
     
    7475   * \overload
    7576   */
    76   inline bool operator==(bool y) { return (*this) == tribool(y); }
     77  constexpr bool operator==(bool y) const { return (*this) == tribool(y); }
    7778
    7879  /**
    7980   * \overload
    8081   */
    81   inline bool operator==(dontcare_keyword_t)
     82  constexpr bool operator==(dontcare_keyword_t) const
    8283  { return tribool(dontcare) == (*this); }
    8384
     
    8889   * \throws nothrow
    8990   */
    90   inline bool operator!=(tribool y)
     91  constexpr bool operator!=(tribool y) const
    9192  {
    9293    return !((*this) == y);
     
    9697   * \overload
    9798   */
    98   inline bool operator!=(bool y) { return (*this) != tribool(y); }
     99  constexpr bool operator!=(bool y) const { return (*this) != tribool(y); }
    99100
    100101  /**
    101102   * \overload
    102103   */
    103   inline bool operator!=(dontcare_keyword_t)
     104  constexpr bool operator!=(dontcare_keyword_t) const
    104105  { return (*this) != tribool(dontcare); }
    105106
     
    114115 * \overload
    115116 */
    116 inline bool operator==(bool x, tribool y) { return tribool(x) == y; }
     117constexpr bool operator==(bool x, tribool y) { return tribool(x) == y; }
    117118
    118119/**
    119120 * \overload
    120121 */
    121 inline bool operator==(dontcare_keyword_t, tribool x)
     122constexpr bool operator==(dontcare_keyword_t, tribool x)
    122123{ return tribool(dontcare) == x; }
    123124
     
    125126 * \overload
    126127 */
    127 inline bool operator!=(bool x, tribool y) { return tribool(x) != y; }
     128constexpr bool operator!=(bool x, tribool y) { return tribool(x) != y; }
    128129
    129130/**
    130131 * \overload
    131132 */
    132 inline bool operator!=(dontcare_keyword_t, tribool x)
     133constexpr bool operator!=(dontcare_keyword_t, tribool x)
    133134{ return tribool(dontcare) != x; }
    134135
Note: See TracChangeset for help on using the changeset viewer.