2016-06-26 26 views
3

Angenommen, die Template-FunktionStandard oder Nullwert der unbekannten Vorlagenart

template<typename T> 
T foo(){ 
    // ... 
    // Error occured 
    if(error) 
    return 0; 
    // ... 
} 

die 0, 0.0f, nullptr, ... je nach Art zurückgeben sollte T, wenn ein Fehler aufgetreten ist.

Wie erhalten Sie die 0 eines unbekannten Vorlagentyps? in C# können Sie dazu default(T) schreiben.

Wie führt man das in C++ durch?

Antwort

5

Sie können value initialization wie return T(); oder return T{}; verwenden (da C++ 11), oder einfach nur return {}; (siehe list initialization (since C++11)) den Standardwert von T zurückzukehren.

+0

Welche würden Sie bevorzugen? – Matthias

+0

@Matthias 'return T();' und 'return T {};' haben die gleiche Wirkung hier, entweder sieht mir gut. 'return {};' ist die kürzeste, die Sie vielleicht verwenden möchten. – songyuanyao