8#include <QtCore/qtconfigmacros.h>
35#ifdef __cpp_lib_constexpr_dynamic_alloc
36using std::construct_at;
40 typename Enable = std::void_t<decltype(::new (std::declval<void *>()) T(std::declval<Args>()...))> >
43 return ::new (
const_cast<void *
>(
static_cast<const volatile void *
>(
ptr)))
44 T(std::forward<Args>(
args)...);
52#ifdef __cpp_lib_to_address
60 static_assert(!std::is_function_v<T>,
"to_address must not be used on function types");
64template <
typename Ptr,
typename std::enable_if_t<!std::is_po
inter_v<Ptr>,
bool> = true>
65constexpr auto to_address(
const Ptr &
ptr)
noexcept;
69 template <
typename Ptr,
typename =
void>
71 static auto get(
const Ptr &
ptr)
noexcept
74 template <
typename Ptr>
76 decltype(std::pointer_traits<Ptr>::to_address(std::declval<const Ptr&>()))
79 static auto get(
const Ptr &
ptr)
noexcept
80 {
return std::pointer_traits<Ptr>::to_address(
ptr); }
84template <
typename Ptr,
typename std::enable_if_t<!std::is_po
inter_v<Ptr>,
bool>>
Combined button and popup list for selecting options.
constexpr T * to_address(T *p) noexcept
T * construct_at(T *ptr, Args &&... args)
static ControlElement< T > * ptr(QWidget *widget)
static auto get(const Ptr &ptr) noexcept
static auto get(const Ptr &ptr) noexcept