繁体   English   中英

使用C ++ 14的自动函数类型返回推导代替std :: common_type总是安全的吗?

[英]Is it always safe to use C++14's auto function type return deduction in place of std::common_type?

我正在将部分代码库从C ++ 11升级到C ++ 14。 我有几个数学实用程序函数,它们接受多个输入参数并返回std::common_type_t<...>类型的单个值。

我正在考虑用简单的auto替换显式返回值。 我认为类型推导确实试图找到这些情况下的常见类型。 有什么情况不行吗?

使用auto转换所有出现的std::common_type_T<...>返回值总是安全的吗?

功能示例:

template<typename T1, typename T2, typename T3> 
std::common_type_t<T1, T2, T3> getClamped(T1 mValue, T2 mMin, T3 mMax)
{       
    return mValue < mMin ? mMin : (mValue > mMax ? mMax : mValue);
}

不,它并不总是安全的。

我假设你的数学函数比这更多,但这里有一个例子,结果会有所不同。

template <class T, class U>
std::common_type_t<T, U> add(T t, U u) { return t + u; }

如果用两个char调用此函数,结果将是char 你会自动推断出返回类型,它会产生一个int

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM