为什么std :: gcd/lcm返回std :: common_type_t <M,N>而不是auto?

陳 力*_*陳 力 2 c++

cppreference:

template< class M, class N>
constexpr std::common_type_t<M, N> gcd(M m, N n);    (since C++17)
Run Code Online (Sandbox Code Playgroud)

IIUC,返回正确的类型,

template< class M, class N>
constexpr auto gcd(M m, N n);    (since C++17)
Run Code Online (Sandbox Code Playgroud)

自c ++ 14以来,它具有相同的效果和更多的优点.std::common_type_t只是一个解决方法c++11.但是std::gcd从那以后c++17

Sil*_*olo 5

auto表示应该从实现中推断出类型.auto没有实现的情况下放置文档页面对于阅读文档的任何人都没有帮助.另一方面,std::common_type_t有明确定义的行为,直接从该文档页面链接,使其更有帮助.