2016-07-09 5 views
3

Wenn ich eine Template-Klasse für einen bekannten Typ in C++ Aliasnamens will, muss ich etwas tun, wie folgt aus:Aliasing Funktion Vorlage mit bekanntem Typ

using MyVector = std::vector<MyClass>; 

Wie ahieve ich das gleiche für Funktionsschablonen?

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

Ich habe versucht:

using MyIntFunction = MyFunction<int>; 

Aber seine nicht funktioniert.

+2

würde ich ' auto && MyIntFunction = [] (int v) {MeineFunktion (v); }; '; Meiner Meinung nach ist eine Funktion in C++ nativ ein Singleton, kein Typ/Klasse, und es ist nicht möglich für Aliasing. –

Antwort

1

Sie können Vorlagenaliasnamen nicht für Funktionen verwenden. Eine solche Syntax gibt es nicht.

+0

Danke, das wusste ich nicht –

1

Alias-Deklarationen sollen Aliase für Typen einführen. Wie dem auch sei

können Sie eine constexpr Variable verwenden zu tun, was (ich vermute) Sie versuchen zu tun:

constexpr auto MyIntFunction = &MyFunction<int>; 

Es folgt ein minimal, Arbeitsbeispiel:

#include<iostream> 

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

constexpr auto MyIntFunction = &MyFunction<int>; 

int main() { 
    MyIntFunction(42); 
} 
Verwandte Themen