Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Возможен вот такой вариантАвтор: Evgeny.Panasyuk
Дата: 12.10.14
:
Раза в 2-3 больше кода это такая мелочь...
EP>Такое было в C++98 — помечаешь метод ключевым словом, и компилятор не даст вызывать его без лока.
Чего?
EP>В Nemerle есть вывод типов через использование, но не нужно забывать/умалчивать что сами типы-то несравнимо примитивнее — например higher-rank polymorphism'а нет, и соответствующего вывода типов тоже 
Точно нет?
| | Скрытый текст |
| | public abstract class Foo
{
public abstract Bar[T](value : T) : T;
}
public class FooImpl : Foo
{
public override Bar[T](value : T) : T
{
value
}
}
module Program
{
Test[T](foo : Foo, t : T, s : string) : void
{
WriteLine(foo.Bar(t));
WriteLine(foo.Bar(s));
}
Main() : void
{
Test(FooImpl(), 1, "asd");
Test(FooImpl(), "qwe", "asd");
_ = ReadKey();
}
}
|
| | |
EP>Без проблем: live demo.
Тормоза и выделение памяти.
EP>Делают, например смотри ODB:
0.00001% пользователей это никто.
EP>Я использовал Clang ASTMatcher — никакого ада.
Вот это ад:
binaryOperator(hasOperatorName("+"), hasLHS(integerLiteral(equals(0))))
Для сравнения аналог на немерле.
<[ $r + 0 ]>
EP>С чем? С Nemerle? Почему?
Слишком долго объяснять, учитывая то, что для тебя Clang ASTMatcher не ад.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>