Boost logo

Boost :

Subject: Re: [boost] [system] Would it be possible to trial a breaking change to Boost.System and see what happens?
From: Peter Dimov (lists_at_[hidden])
Date: 2018-01-15 15:20:36

> > I should probably just add the relevant constexpr's to Boost.System.

The only nontrivial change this entails is changing the member relational
operators of error_category:

class error_category

    bool operator==(const error_category& rhs) const noexcept;
    bool operator!=(const error_category& rhs) const noexcept;
    bool operator<(const error_category& rhs) const noexcept;

into nonmembers:

constexpr bool operator==(const error_category& lhs,
    const error_category& rhs) noexcept;
constexpr bool operator!=(const error_category& lhs,
    const error_category& rhs) noexcept;
bool operator<(const error_category& lhs,
    const error_category& rhs) noexcept;

For the first two, g++ complained that members of a non-literal class can't
be constexpr (whereas clang had no problem with it.) The third one I moved
out for consistency.

Nonmembers seem more idiomatic in either case; can someone think of an
argument against having these out of the class?

Boost list run by bdawes at, gregod at, cpdaniel at, john at