Итак, я ломал голову, пытаясь найти путь к чему-то.Я думал, что отправлю это здесь, чтобы видеть, есть ли у кого-нибудь какие-либо идеи.Рассмотрим следующее:
template <typename S, typename T, T S::* pMember>
bool SortByMember(const S& L, const S& R)
{
return L.*pMember < R.*pMember;
}
...
struct SomeStruct
{
int SomeMember;
};
void SomeFunction(void)
{
GetSortByMember<&SomeStruct::SomeMember>();
}
Я бы хотел, чтобы функция GetSortByMember возвращала указатель функции на соответствующее создание экземпляра SortByMember.Однако я не могу придумать способ объявить / определить GetSortByMember таким образом, чтобы пользователь не передавал также тип класса и тип члена.Это:
GetSortByMember<SomeStruct, int, &SomeStruct::SomeMember>();
слишком многословно и требует от меня указать тип члена.Я уверен, что, вероятно, есть решение в библиотеках boost, но я бы предпочел не вводить эту зависимость в проект, над которым я работаю.
Я очень сомневаюсь, что есть решение, которое даст точноесинтаксис, который я использовал в псевдокоде, но, возможно, что-то можно сделать с шаблонными классами или макросами?
Подпись SortByMember ожидается классом, который будет использовать указатель функции, поэтому его нельзя изменить.