Я вообще отстал от жизни, как привык по старинке использовать typedef, так и использую.
Но новый using хорош тем, что позволяет делать шаблонные алиасы.
И вот мне захотелось сделать алиас шаблонной функции. И что-то не работает. Поверхностное изучение вопроса показало, что шаблонные алиасы работают только для типов, а не для функций. Я что-то не так понял, и это таки возможно, или я всё правильно понял, и это невозможно, но тогда какого хэ?
Здравствуйте, Marty, Вы писали:
M>typedef — не работал, но я думал, что новый using вроде весь из себя такой классный, и я подумал, что его можно и для шаблонных функций использовать.
Да, расскажи лучше, что за задачу решаешь.
--
Не можешь достичь желаемого — пожелай достигнутого.
Здравствуйте, rg45, Вы писали:
M>>typedef — не работал, но я думал, что новый using вроде весь из себя такой классный, и я подумал, что его можно и для шаблонных функций использовать.
R>Да, расскажи лучше, что за задачу решаешь.
Перетащить шаблон функции в другое пространство имён. Конкретный шаблон с конкретным списком параметров, а не просто всё семейство по имени
Здравствуйте, Marty, Вы писали:
M>Перетащить шаблон функции в другое пространство имён. Конкретный шаблон с конкретным списком параметров, а не просто всё семейство по имени
Так нельзя, к сожалению. А может, к счастью. Имхо, чрезмерная гибкость может дать эффект, обратный желаемому. Потом запаришься искать, какая функция подхватилась и почему не та, что нужно.
--
Не можешь достичь желаемого — пожелай достигнутого.
Здравствуйте, rg45, Вы писали:
R>Здравствуйте, Marty, Вы писали:
M>>Перетащить шаблон функции в другое пространство имён. Конкретный шаблон с конкретным списком параметров, а не просто всё семейство по имени
R>Так нельзя, к сожалению. А может, к счастью. Имхо, чрезмерная гибкость может дать эффект, обратный желаемому. Потом запаришься искать, какая функция подхватилась и почему не та, что нужно.
Да вроде можно, если конечно я правильно понял задачу. С использованием шаблонных переменных. Че-нить типа такого:
Здравствуйте, Voivoid, Вы писали:
V>Да вроде можно, если конечно я правильно понял задачу. С использованием шаблонных переменных. Че-нить типа такого:
V>
Как я понял, хочет немного другого. Ему нужно, чтоб test_alias тоже был шаблоном, но чтоб при этом из namespace foo был выбран только один определенный шаблон test с заданным набором шаблонных и формальных параметров. Подразумевается, что в пространстве имен foo присутсвуют еще и другие перегрузки с именем test (шаблонные и/или нешаблонные).
--
Не можешь достичь желаемого — пожелай достигнутого.
V>namespace bar
V>{
V> template <typename T, typename K>
V> constexpr inline auto test_alias = foo::test<T, K>;
V>}
V>
V>Правда в этом случае вывод типов при вызове функции через такой alias не работает и надо будет руками параметры прописывать: V>
V>test_alias<int, int>(2,3);
V>
Ну, в этом случае получается шаблон указателя на функцию. Конечно, это не то же самое, что шаблон функции — вывода шаблонных параметров для него не будет и ни в ADL, ни в overload resolution он не сможет участвовать.
--
Не можешь достичь желаемого — пожелай достигнутого.
Здравствуйте, rg45, Вы писали:
R>Ну, в этом случае получается шаблон указателя на функцию. Конечно, это не то же самое, что шаблон функции — вывода шаблонных параметров для него не будет и ни в ADL, ни в overload resolution он не сможет участвовать.
Ну да. Но при желании можно подумать в сторону написания функтора, который будет параметризовываться произвольной функцией и иметь шаблонный operator(). Тогда по идее получится пофиксить вывод шаблонных параметров и возможно перегрузку функций, но конечно не ADL. Как вариант boost::hof'ом например можно попробовать вдохновиться — https://godbolt.org/z/7M1E4fvrz
Здравствуйте, Voivoid, Вы писали:
V>Ну да. Но при желании можно подумать в сторону написания функтора, который будет параметризовываться произвольной функцией и иметь шаблонный operator(). Тогда по идее получится пофиксить вывод шаблонных параметров и возможно перегрузку функций, но конечно не ADL. Как вариант boost::hof'ом например можно попробовать вдохновиться — https://godbolt.org/z/7M1E4fvrz
Ух ты, прикольная библиотека, как-то прошла мимо внимания. Надо поизучать, чего они там накрутили.