remove volatile support

This commit is contained in:
BlackMATov
2021-11-29 19:07:15 +07:00
parent 15c4d1c3c6
commit 1c48e85dbe
3 changed files with 24 additions and 569 deletions

View File

@@ -77,7 +77,6 @@ namespace meta_hpp
enum class method_flags : std::uint32_t {
is_const = 1 << 0,
is_noexcept = 1 << 1,
is_volatile = 1 << 2,
is_lvalue_qualified = 1 << 3,
is_rvalue_qualified = 1 << 4,
};

View File

@@ -119,102 +119,4 @@ namespace meta_hpp::detail
return method_flags::is_const | method_flags::is_noexcept | method_flags::is_rvalue_qualified;
}
};
//
template < typename R, typename C, typename... Args >
struct method_traits<R(C::*)(Args...) volatile> : method_traits<R(C::*)(Args...)> {
using qualified_type = C;
static bitflags<method_flags> make_flags() noexcept {
return method_flags::is_volatile;
}
};
template < typename R, typename C, typename... Args >
struct method_traits<R(C::*)(Args...) volatile const> : method_traits<R(C::*)(Args...)> {
using qualified_type = const C;
static bitflags<method_flags> make_flags() noexcept {
return method_flags::is_volatile | method_flags::is_const;
}
};
template < typename R, typename C, typename... Args >
struct method_traits<R(C::*)(Args...) volatile noexcept> : method_traits<R(C::*)(Args...)> {
using qualified_type = C;
static bitflags<method_flags> make_flags() noexcept {
return method_flags::is_volatile | method_flags::is_noexcept;
}
};
template < typename R, typename C, typename... Args >
struct method_traits<R(C::*)(Args...) volatile const noexcept> : method_traits<R(C::*)(Args...)> {
using qualified_type = const C;
static bitflags<method_flags> make_flags() noexcept {
return method_flags::is_volatile | method_flags::is_const | method_flags::is_noexcept;
}
};
template < typename R, typename C, typename... Args >
struct method_traits<R(C::*)(Args...) volatile &> : method_traits<R(C::*)(Args...)> {
using qualified_type = C&;
static bitflags<method_flags> make_flags() noexcept {
return method_flags::is_volatile | method_flags::is_lvalue_qualified;
}
};
template < typename R, typename C, typename... Args >
struct method_traits<R(C::*)(Args...) volatile & noexcept> : method_traits<R(C::*)(Args...)> {
using qualified_type = C&;
static bitflags<method_flags> make_flags() noexcept {
return method_flags::is_volatile | method_flags::is_noexcept | method_flags::is_lvalue_qualified;
}
};
template < typename R, typename C, typename... Args >
struct method_traits<R(C::*)(Args...) volatile const &> : method_traits<R(C::*)(Args...)> {
using qualified_type = const C&;
static bitflags<method_flags> make_flags() noexcept {
return method_flags::is_volatile | method_flags::is_const | method_flags::is_lvalue_qualified;
}
};
template < typename R, typename C, typename... Args >
struct method_traits<R(C::*)(Args...) volatile const & noexcept> : method_traits<R(C::*)(Args...)> {
using qualified_type = const C&;
static bitflags<method_flags> make_flags() noexcept {
return method_flags::is_volatile | method_flags::is_const | method_flags::is_noexcept | method_flags::is_lvalue_qualified;
}
};
template < typename R, typename C, typename... Args >
struct method_traits<R(C::*)(Args...) volatile &&> : method_traits<R(C::*)(Args...)> {
using qualified_type = C&&;
static bitflags<method_flags> make_flags() noexcept {
return method_flags::is_volatile | method_flags::is_rvalue_qualified;
}
};
template < typename R, typename C, typename... Args >
struct method_traits<R(C::*)(Args...) volatile && noexcept> : method_traits<R(C::*)(Args...)> {
using qualified_type = C&&;
static bitflags<method_flags> make_flags() noexcept {
return method_flags::is_volatile | method_flags::is_noexcept | method_flags::is_rvalue_qualified;
}
};
template < typename R, typename C, typename... Args >
struct method_traits<R(C::*)(Args...) volatile const &&> : method_traits<R(C::*)(Args...)> {
using qualified_type = const C&&;
static bitflags<method_flags> make_flags() noexcept {
return method_flags::is_volatile | method_flags::is_const | method_flags::is_rvalue_qualified;
}
};
template < typename R, typename C, typename... Args >
struct method_traits<R(C::*)(Args...) volatile const && noexcept> : method_traits<R(C::*)(Args...)> {
using qualified_type = const C&&;
static bitflags<method_flags> make_flags() noexcept {
return method_flags::is_volatile | method_flags::is_const | method_flags::is_noexcept | method_flags::is_rvalue_qualified;
}
};
}