0
我有一個函數,現在可以爲我返回一個特定類型的值。它看起來像這樣模板函數編譯時返回類型無參數
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>();
請注意,如果使用優化進行編譯,此代碼是最優的。您可以執行「優雅」的模板重載,但會使代碼比本應更復雜。 –
簡單的答案是'如果constexpr'並且沒有別的東西需要改變。 – chris
你是說如果我做「如果constexpr(std :: is_same ....)」那麼它在編譯時解析? – flips