Устранение перегрузки функции-члена шаблона - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь написать шаблонный класс, который наследуется от T, и чтобы правильно реализовать одну часть, мне нужно знать, с каким типом данных работает этот T. К счастью, все допустимые замены для T имеют метод-член GetOutput, который возвращает ожидаемый тип данных. Однако метод имеет две перегрузки: GetOutput() и GetOutput(int). Я пытался извлечь тип, используя этот ответ , но мне не удается получить разрешение перегрузки:

using OutputType = typename std::result_of<decltype(&T::GetOutput)(T)>::type;

Возможно ли это, и если Итак, как правильно туда добраться?

1 Ответ

2 голосов
/ 06 февраля 2020

Если две перегрузки GetOutput возвращают один и тот же тип, вы можете просто выбрать один из них и использовать его тип возврата:

using OutputType = decltype(std::declval<T&>().GetOutput());
...