2016-06-26 13 views
3

のゼロ値を返す必要がありますテンプレート関数デフォルトまたは不明なテンプレート型

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

を想定し00.0fnullptr、...エラーが発生したタイプT、依存。

未知のテンプレートタイプの0を取得するにはどうすればよいですか? C#では、これを行うにはdefault(T)と書くことができます。

これをC++で実行する方法は? (C++ 11以降)、または単にreturn {};list initialization (since C++11)を参照)はTのデフォルト値を返すように

答えて

5

あなたはreturn T();またはreturn T{};のようなvalue initializationを使用することができます。

+0

どちらをお好みですか? – Matthias

+0

@Matthias 'return T();'と 'return T {};'と同じ効果があります。 'return {};'は最短のものです。あなたはそれを使いたいかもしれません。 – songyuanyao

関連する問題