|
Boost : |
Subject: Re: [boost] [utility] Proposal to extract some components from Boost.Log
From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2013-09-01 07:36:20
On Sunday 01 September 2013 11:06:16 Daryle Walker wrote:
> I donât think you need a âconstexpr_if.â You can unconditionally put
> BOOST_CONSTEXPR in the definition. This will unconditionally add
> âconstexprâ to the member operator (for C++11 systems), which will be
> ignored if the compiler determines that the attached function (or a
> particular call) is disqualified from being used in constant expressions.
> So any extra preprocessor work, or a variant macro, is unnecessary.
No, that doesn't work.
struct foo
{
void* m_p;
constexpr explicit operator bool () const
{
return !this->operator!();
}
bool operator! () const
{
return !m_p;
}
};
g++ -std=gnu++11 constexpr_operator.cpp -o constexpr_operator
constexpr_operator.cpp: In member function âconstexpr foo::operator bool()
constâ:
constexpr_operator.cpp:9:27: error: call to non-constexpr function âbool
foo::operator!() constâ
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk