template using для функции
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 05.01.24 20:25
Оценка: -1
Здравствуйте!

Я вообще отстал от жизни, как привык по старинке использовать typedef, так и использую.

Но новый using хорош тем, что позволяет делать шаблонные алиасы.

И вот мне захотелось сделать алиас шаблонной функции. И что-то не работает. Поверхностное изучение вопроса показало, что шаблонные алиасы работают только для типов, а не для функций. Я что-то не так понял, и это таки возможно, или я всё правильно понял, и это невозможно, но тогда какого хэ?
Маньяк Робокряк колесит по городу
Re: template using для функции
От: reversecode google
Дата: 05.01.24 20:28
Оценка:
typedef разве работал для функций?
Re[2]: template using для функции
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 05.01.24 20:31
Оценка: -1
Здравствуйте, reversecode, Вы писали:

R>typedef разве работал для функций?


typedef — не работал, но я думал, что новый using вроде весь из себя такой классный, и я подумал, что его можно и для шаблонных функций использовать.
Маньяк Робокряк колесит по городу
Re[3]: template using для функции
От: reversecode google
Дата: 05.01.24 20:32
Оценка:
давай пример
а то нифига не понятно
Re[4]: template using для функции
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 05.01.24 20:34
Оценка: -1
Здравствуйте, reversecode, Вы писали:

R>давай пример

R>а то нифига не понятно

Пример чего?

Как я пытаюсь сделать алиас для шаблонной функции? Сам не можешь такое сообразить?
Маньяк Робокряк колесит по городу
Re[3]: template using для функции
От: rg45 СССР  
Дата: 05.01.24 20:34
Оценка:
Здравствуйте, Marty, Вы писали:

M>typedef — не работал, но я думал, что новый using вроде весь из себя такой классный, и я подумал, что его можно и для шаблонных функций использовать.


Да, расскажи лучше, что за задачу решаешь.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[5]: template using для функции
От: reversecode google
Дата: 05.01.24 20:36
Оценка:
могу, у меня работает
Re[6]: template using для функции
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 05.01.24 21:07
Оценка: -1
Здравствуйте, reversecode, Вы писали:

R>могу, у меня работает


Но ты не покажешь? Зачем тогда вылез?
Маньяк Робокряк колесит по городу
Re[7]: template using для функции
От: reversecode google
Дата: 05.01.24 21:09
Оценка: +5
давай либо ты показываешь а не рассказываешь что у тебя не работает
либо дальше сам
Re[4]: template using для функции
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 05.01.24 21:09
Оценка:
Здравствуйте, rg45, Вы писали:

M>>typedef — не работал, но я думал, что новый using вроде весь из себя такой классный, и я подумал, что его можно и для шаблонных функций использовать.


R>Да, расскажи лучше, что за задачу решаешь.



Перетащить шаблон функции в другое пространство имён. Конкретный шаблон с конкретным списком параметров, а не просто всё семейство по имени
Маньяк Робокряк колесит по городу
Re[5]: template using для функции
От: rg45 СССР  
Дата: 05.01.24 21:13
Оценка: 8 (1)
Здравствуйте, Marty, Вы писали:

M>Перетащить шаблон функции в другое пространство имён. Конкретный шаблон с конкретным списком параметров, а не просто всё семейство по имени


Так нельзя, к сожалению. А может, к счастью. Имхо, чрезмерная гибкость может дать эффект, обратный желаемому. Потом запаришься искать, какая функция подхватилась и почему не та, что нужно.
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 05.01.2024 21:13 rg45 . Предыдущая версия .
Re[8]: template using для функции
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 05.01.24 21:21
Оценка: -8
Здравствуйте, reversecode, Вы писали:

R>давай либо ты показываешь а не рассказываешь что у тебя не работает

R>либо дальше сам

Наверное я дальше сам. Можно тебя попросить не отвечать мне больше в профильных форумах? А то кроме говна от тебя все равно никакого толку нет
Маньяк Робокряк колесит по городу
Re[6]: template using для функции
От: Voivoid Россия  
Дата: 05.01.24 21:23
Оценка: 36 (1)
Здравствуйте, rg45, Вы писали:

R>Здравствуйте, Marty, Вы писали:


M>>Перетащить шаблон функции в другое пространство имён. Конкретный шаблон с конкретным списком параметров, а не просто всё семейство по имени


R>Так нельзя, к сожалению. А может, к счастью. Имхо, чрезмерная гибкость может дать эффект, обратный желаемому. Потом запаришься искать, какая функция подхватилась и почему не та, что нужно.

Да вроде можно, если конечно я правильно понял задачу. С использованием шаблонных переменных. Че-нить типа такого:

namespace foo
{
    template <typename T, typename K>
    void test(T, K)
    {
    }
}

namespace bar
{
    constexpr inline auto test_alias = foo::test<int, int>;
}

int main()
{
    bar::test_alias(2, 3);
}


см. https://godbolt.org/z/x1dY5TYGa
Re[7]: template using для функции
От: rg45 СССР  
Дата: 05.01.24 21:27
Оценка: +1
Здравствуйте, Voivoid, Вы писали:

V>Да вроде можно, если конечно я правильно понял задачу. С использованием шаблонных переменных. Че-нить типа такого:


V>
namespace foo
V>{
V>    template <typename T, typename K>
V>    void test(T, K)
V>    {
V>    }
V>}

V>namespace bar
V>{
V>    constexpr inline auto test_alias = foo::test<int, int>;
V>}

V>int main()
V>{
V>    bar::test_alias(2, 3);
V>}


V>см. https://godbolt.org/z/x1dY5TYGa


Как я понял, хочет немного другого. Ему нужно, чтоб test_alias тоже был шаблоном, но чтоб при этом из namespace foo был выбран только один определенный шаблон test с заданным набором шаблонных и формальных параметров. Подразумевается, что в пространстве имен foo присутсвуют еще и другие перегрузки с именем test (шаблонные и/или нешаблонные).
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 05.01.2024 21:32 rg45 . Предыдущая версия . Еще …
Отредактировано 05.01.2024 21:29 rg45 . Предыдущая версия .
Отредактировано 05.01.2024 21:28 rg45 . Предыдущая версия .
Re[7]: template using для функции
От: Voivoid Россия  
Дата: 05.01.24 21:28
Оценка:
Здравствуйте, Voivoid, Вы писали:

V>С использованием шаблонных переменных.


Упс. В моем предыдещем примере конечно никаких шаблонных переменных нет, но их можно использовать если нужен шаблонный алиас, т.е. типа:

namespace bar
{
    template <typename T, typename K>
    constexpr inline auto test_alias = foo::test<T, K>;
}


Правда в этом случае вывод типов при вызове функции через такой alias не работает и надо будет руками параметры прописывать:
test_alias<int, int>(2,3);
Re[8]: template using для функции
От: rg45 СССР  
Дата: 05.01.24 21:35
Оценка:
Здравствуйте, Voivoid, Вы писали:

V>
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 он не сможет участвовать.
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 05.01.2024 21:36 rg45 . Предыдущая версия .
Re[9]: template using для функции
От: Voivoid Россия  
Дата: 05.01.24 22:03
Оценка: 72 (1)
Здравствуйте, rg45, Вы писали:

R>Ну, в этом случае получается шаблон указателя на функцию. Конечно, это не то же самое, что шаблон функции — вывода шаблонных параметров для него не будет и ни в ADL, ни в overload resolution он не сможет участвовать.


Ну да. Но при желании можно подумать в сторону написания функтора, который будет параметризовываться произвольной функцией и иметь шаблонный operator(). Тогда по идее получится пофиксить вывод шаблонных параметров и возможно перегрузку функций, но конечно не ADL. Как вариант boost::hof'ом например можно попробовать вдохновиться — https://godbolt.org/z/7M1E4fvrz
Re[10]: template using для функции
От: Кодт Россия  
Дата: 06.01.24 18:05
Оценка:
Здравствуйте, Voivoid, Вы писали:

V>Ну да. Но при желании можно подумать в сторону написания функтора, который будет параметризовываться произвольной функцией и иметь шаблонный operator(). Тогда по идее получится пофиксить вывод шаблонных параметров и возможно перегрузку функций, но конечно не ADL. Как вариант boost::hof'ом например можно попробовать вдохновиться — https://godbolt.org/z/7M1E4fvrz


Ух ты, прикольная библиотека, как-то прошла мимо внимания. Надо поизучать, чего они там накрутили.
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.