我有两段代码:
1)
template< class T >
auto min( T a, T b ) -> decltype(a)
{
return a < b ? a : b;
}
int main()
{
struct A{};
auto x = min( 2, 3 ) ;// success
auto a = A{};
auto b = A{};
auto c = min(a,b);// here is error
}
和 2)
template< class T >
auto min(T a, T b ) ->decltype(a<b, a)
{
return a < b ? a : b;
}
int main()
{
struct A{};
auto x = min( 2, 3 ) ;// success
auto a = A{};
auto b = A{};
auto c = min(a,b);// here is another error
}
第一种和第二种情况的错误有什么不同?哪个更好?
UPD:哪个“最小”实现更好?