0

私は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    
}

http://ideone.com/cXgnPy

そして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    
}

http://ideone.com/Rfs4Lv

1 番目と 2 番目のケース エラーの違いは何ですか? どっちがいい?

UPD:どの「最小」実装が優れていますか?

4

3 に答える 3

1

struct A は operator< defined ではありませんが、int は定義されています

于 2013-09-02T07:25:39.980 に答える