私には今すぐ特定の型の値を返すことができる関数があります。それは次のようになります。このテンプレート関数コンパイル時の戻り型なし引数
template<typename T>
T getNullValue(){
if(std::is_same<T,long long>::value){
return NULL_LONG;
}else if(std::is_same<T,double>::value){
return NULL_DOUBLE;
}
}
これは動作しますが、私は時間をコンパイルするとは対照的に、実行時に解決し、それを好きではないが、これは私が、私はそれが私ができるようにすることができますどのように
double x = getNullValue<double>();
long long y = getNullValue<long long>();
を行うことができます実行時に解決する必要なしに返すものに応じて、異なるバージョンのgetNullValueをオーバーロードするだけです。
getNullValue<type i need>();
このコードは最適化してコンパイルすると最適です。あなたは "エレガントな"テンプレートのオーバーロードを行うことができますが、コードをもっと複雑にする必要があります。 –
簡単な答えは 'if constexpr'で、それ以外は変更する必要はありません。 – chris
私は "constexpr(std :: is_same ....)"を実行すると、コンパイル時に解決されますか? – flips