Я пытаюсь написать функцию, принимающую сложный аргумент.Допустим, это может быть класс или шаблон класса.Код внутри функции одинаков для всех аргументов, и мне не нужно нигде ссылаться на тип аргумента.Итак, я хочу написать что-то вроде этого:
auto func(auto& someComplicatedClassInstance) {
return someComplicatedClassInstance.someMemberFunc();
}
Я не могу просто написать template <typename T>
, потому что он не будет работать, если T сам шаблон, а auto
аргумент функции не являетсявещь в C ++.Делать func
лямбду единственным способом?Кажется странным, что такая же функция компилятора была бы включена для лямбда-выражений, но не для обычных функций.И в моем конкретном случае я пишу перегрузку для operator<<
, поэтому я не могу сделать это лямбда-выражением.