Не работает перегрузка по функциональным типам
От: _NN_ www.nemerleweb.com
Дата: 03.11.13 12:04
Оценка:
Так компилируется:

module Program
{
  F[T1](_ : Action[T1]) : void {}
  F[T1,R](_ : Func[T1, R]) : void {}
  
  Main() : void
  {
    F( (a:int)=>{} );
  }
}


А если вместо Action/Func использовать -> , то нет:

module Program
{
  //F[T1](_ : T1 -> void) : void {}
  F[T1,R](_ : T1 -> R) : void {}
  
  Main() : void
  {
    F( (a:int)=>{} );
  }
}

error : cannot use `void' in generic specifier [int, void] of method Program.F(_N_wildcard_3685 : T1 -> R) : void


module Program
{
  F[T1](_ : T1 -> void) : void {}
  F[T1,R](_ : T1 -> R) : void {}
  
  Main() : void
  {
    F( (a:int)=>{} );
  }
}

error : typing fails on ambiguity between overloads:
warning : hint: Posible overload: method Program.F(_N_wildcard_3685 : T1 -> void) : void
warning : hint: overload definition
warning : hint: Posible overload: method Program.F(_N_wildcard_3686 : T1 -> R) : void
warning : hint: overload definition


Баг ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.