我想要做這樣的事情:返回不同的數據類型而無需顯式指定數據類型
template<class T>
T foo(uint8_t x)
{
if (x<32) return ((int32_t)1<<x);
else return ((int64_t)1<<x);
}
,但我不想叫foo<int32_t>(x)
或foo<int64_t>(x)
。它只是看起來不錯。我希望返回類型能夠被自動正確推導出來。
預期用法的例子:
std::max(foo(10),some_variable); // return type of foo need to match some_variable
std::min(foo(32),another_variable);
該解決方案並不一定是模板。如果宏可以達到相同的效果,我很樂意使用宏。有什麼建議嗎?
'foo()'可能嗎? (我的意思是'x'運行時或編譯時間的值?) –
Jarod42
它是一個運行時間值 – james
不幸的是,您使用它的方式是不可能的。如果'T'也用於參數,那麼它會正常工作。 –