Псевдоним шаблона функции с известным типом

Если я хочу создать псевдоним класса шаблона для известного типа в С++, я делаю что-то вроде этого:

using MyVector = std::vector<MyClass>;

Как добиться того же для шаблонов функций?

template <typename T> void MyFunction(T MyValue);

Я старался :

using MyIntFunction = MyFunction<int>;

Но это не работает.


person Igor Mitrovic    schedule 09.07.2016    source источник
comment
Я бы использовал auto&& MyIntFunction = [](int v){ MyFunction(v); }; ; На мой взгляд, функция в C++ изначально является синглтоном, а не типом/классом, и для нее невозможно использовать псевдонимы.   -  person Feng Wang    schedule 09.07.2016


Ответы (2)


Объявления псевдонимов предназначены для введения псевдонимов для типов.

В любом случае, вы можете использовать переменную constexpr, чтобы делать то, что (я подозреваю), вы пытаетесь сделать:

constexpr auto MyIntFunction = &MyFunction<int>;

Это следует за минимальным рабочим примером:

#include<iostream>

template <typename T>
void MyFunction(T MyValue) {
    std::cout << MyValue << std::endl;
}

constexpr auto MyIntFunction = &MyFunction<int>;

int main() {
    MyIntFunction(42);
}
person skypjack    schedule 10.07.2016

Вы не можете использовать псевдонимы шаблонов для функций, такого синтаксиса нет.

person SergeyA    schedule 09.07.2016
comment
Спасибо, я этого не знал - person Igor Mitrovic; 10.07.2016