mirror of
https://github.com/znc/znc.git
synced 2026-03-28 17:42:41 +01:00
Cleanup ZNC_LVREFQUAL
This commit is contained in:
@@ -17,19 +17,6 @@
|
||||
#ifndef ZNC_MESSAGE_H
|
||||
#define ZNC_MESSAGE_H
|
||||
|
||||
// Remove this after Feb 2016 when Debian 7 is EOL
|
||||
#if __cpp_ref_qualifiers >= 200710
|
||||
#define ZNC_LVREFQUAL &
|
||||
#elif defined(__clang__)
|
||||
#define ZNC_LVREFQUAL &
|
||||
#elif __GNUC__ > 4 || \
|
||||
__GNUC__ == 4 && (__GNUC_MINOR__ > 8 || \
|
||||
__GNUC_MINOR__ == 8 && __GNUC_PATCHLEVEL__ >= 1)
|
||||
#define ZNC_LVREFQUAL &
|
||||
#else
|
||||
#define ZNC_LVREFQUAL
|
||||
#endif
|
||||
|
||||
#ifdef SWIG
|
||||
#define ZNC_MSG_DEPRECATED(msg)
|
||||
#else
|
||||
@@ -166,7 +153,7 @@ class CMessage {
|
||||
// Implicit and explicit conversion to a subclass reference.
|
||||
#ifndef SWIG
|
||||
template <typename M>
|
||||
M& As() ZNC_LVREFQUAL {
|
||||
M& As() & {
|
||||
static_assert(std::is_base_of<CMessage, M>{},
|
||||
"Must be subclass of CMessage");
|
||||
static_assert(sizeof(M) == sizeof(CMessage),
|
||||
@@ -175,7 +162,7 @@ class CMessage {
|
||||
}
|
||||
|
||||
template <typename M>
|
||||
const M& As() const ZNC_LVREFQUAL {
|
||||
const M& As() const& {
|
||||
static_assert(std::is_base_of<CMessage, M>{},
|
||||
"Must be subclass of CMessage");
|
||||
static_assert(sizeof(M) == sizeof(CMessage),
|
||||
@@ -185,12 +172,12 @@ class CMessage {
|
||||
|
||||
template <typename M, typename = typename std::enable_if<
|
||||
std::is_base_of<CMessage, M>{}>::type>
|
||||
operator M&() ZNC_LVREFQUAL {
|
||||
operator M&() & {
|
||||
return As<M>();
|
||||
}
|
||||
template <typename M, typename = typename std::enable_if<
|
||||
std::is_base_of<CMessage, M>{}>::type>
|
||||
operator const M&() const ZNC_LVREFQUAL {
|
||||
operator const M&() const& {
|
||||
return As<M>();
|
||||
}
|
||||
// REGISTER_ZNC_MESSAGE allows SWIG to instantiate correct .As<> calls.
|
||||
|
||||
Reference in New Issue
Block a user