私は2つのコードを持っています:
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
}
1 番目と 2 番目のケース エラーの違いは何ですか? どっちがいい?
UPD:どの「最小」実装が優れていますか?