You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

29 lines
634 B
C++

// SPDX-License-Identifier: BSD-2-Clause
// Copyright CM4all GmbH
// author: Max Kellermann <mk@cm4all.com>
#pragma once
template<typename T>
struct MemberPointerHelper;
template<typename C, typename M>
struct MemberPointerHelper<M C::*> {
using ContainerType = C;
using MemberType = M;
};
/**
* Given a member pointer, this determines the member type.
*/
template<typename T>
using MemberPointerType =
typename MemberPointerHelper<T>::MemberType;
/**
* Given a member pointer, this determines the container type.
*/
template<typename T>
using MemberPointerContainerType =
typename MemberPointerHelper<T>::ContainerType;