2016-07-09 3 views
3

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

using MyVector = std::vector<MyClass>; 

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

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

Я пробовал:

using MyIntFunction = MyFunction<int>; 

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

+2

Я хотел бы использовать ' auto && MyIntFunction = [] (int v) {MyFunction (v); }; '; На мой взгляд, функция в C++ является изначально одноэлементным, а не типом/классом, и это невозможно для псевдонимов. –

ответ

1

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

+0

Спасибо, я не знал, что –

1

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

Во всяком случае, вы можете использовать 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); 
} 
Смежные вопросы