我想要做这样的事情:返回不同的数据类型而无需显式指定数据类型
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'也用于参数,那么它会正常工作。 –