Да как вариант рассматривал. Но Obj всегда будет одного типа, просто либо const либо нет, и выносить его в шаблон мне казалось излишним. Но скорее всего так и сделаю, просто подумал может есть другой способ.
Здравствуйте, rg45, Вы писали:
R>Шаблонный вариант не подойдет? Оно заодно даст возможность использовать функциональные объекты и лябмды:
R>https://ideone.com/dHJdbp
R>
Такой вариант тоже рассматривал, но тут не нравится, что сигнатура фнукции не видна.
Кстати а в плане перфоманса есть отличие в передаче указателя на функцию и использования шаблонной? С учетом того, что туда почти всегда будет лямбда передаваться.
Здравствуйте, koenjihyakkei, Вы писали:
K>Такой вариант тоже рассматривал, но тут не нравится, что сигнатура фнукции не видна.
Сигнатуру функции можно зафиксировать при помощи SFINAE.
K>Кстати а в плане перфоманса есть отличие в передаче указателя на функцию и использования шаблонной?
Если оставить за скобками возможности оптимизации, то использование функционального объекта предпочтительнее, поскольку использование указателя на функцию — это дополнительная косвенность и адрес вызова вычисляется во время выполнения, а не во время компиляции.
K>С учетом того, что туда почти всегда будет лямбда передаваться.
Принимая указатель на функцию, ты сможешь передавать только простейшие лямбды, не использующие захват контекста. Таким образом, польза от лябмд сильно теряется. И вообще, указатели на функции для С++ противоестественны, ИМХО.
K>Да как вариант рассматривал. Но Obj всегда будет одного типа, просто либо const либо нет, и выносить его в шаблон мне казалось излишним. Но скорее всего так и сделаю, просто подумал может есть другой способ.
Просто может быть не один GetChild