Size: a a a

2020 December 27

OB

Oleg B in dlang.ru
структуры именно так себя ведут по умолчанию
источник

OB

Oleg B in dlang.ru
а если ты сборщик используешь и классы, то чем тебе исходные интерфейсы не удобны?
источник

DH

Dark Hole in dlang.ru
Oleg B
при выходе из скопа локальные переменные разрушаются
А как тут принципиально обёртка поменяет дело?
источник

OB

Oleg B in dlang.ru
Dark Hole
А как тут принципиально обёртка поменяет дело?
можно скопировать объект в себя или нет
источник

DH

Dark Hole in dlang.ru
Не. Смысл как раз в том чтобы не копировать объект в принципе, а проксировать на него все запросы. То есть a.i и Wrap!a.i эквивалентны. Разница только в том что к некоторым членам доступа не будет.
источник

DH

Dark Hole in dlang.ru
Если мы копируем или что-то создаём, это одновременно не эквивалентно становится
источник

DH

Dark Hole in dlang.ru
И весь смысл улетает
источник

OB

Oleg B in dlang.ru
Dark Hole
Не. Смысл как раз в том чтобы не копировать объект в принципе, а проксировать на него все запросы. То есть a.i и Wrap!a.i эквивалентны. Разница только в том что к некоторым членам доступа не будет.
тогда нужно следить за временем жизни исходного объекта, делать wrap некопируемым
источник

OB

Oleg B in dlang.ru
опять же, без накладных расходов не обойтись
источник

OB

Oleg B in dlang.ru
но только это немного странные идеи (защит таких)
источник

DH

Dark Hole in dlang.ru
Oleg B
тогда нужно следить за временем жизни исходного объекта, делать wrap некопируемым
Не. Ещё проще: я хочу что бы компилятор оттранслировал в итоге Wrap!a.i в a.i. Абсолютно точно так же как он делает это с mixin("writeln(a.i);"); // => writeln(a.i);
источник

OB

Oleg B in dlang.ru
просто проверь что есть то что тебе нужно в передаваемом типе, а остальное не пытайся использовать
источник

DH

Dark Hole in dlang.ru
Dark Hole
Не. Ещё проще: я хочу что бы компилятор оттранслировал в итоге Wrap!a.i в a.i. Абсолютно точно так же как он делает это с mixin("writeln(a.i);"); // => writeln(a.i);
Так что принципиально одна проблема: D не позволяет так сделать
источник

DH

Dark Hole in dlang.ru
Oleg B
но только это немного странные идеи (защит таких)
Мой безумный гений слишком безумен ахах
источник

EP

Egor Pugin in dlang.ru
Dark Hole
Так что принципиально одна проблема: D не позволяет так сделать
а в других языках вообще можно так?
источник

OB

Oleg B in dlang.ru
Dark Hole
Так что принципиально одна проблема: D не позволяет так сделать
создай структуру с полями ссылками и радуйся)
источник

DH

Dark Hole in dlang.ru
Egor Pugin
а в других языках вообще можно так?
Не видел. Но там обычно и метапрограммирования нет особо.
источник

EP

Egor Pugin in dlang.ru
Dark Hole
Не видел. Но там обычно и метапрограммирования нет особо.
насколько я знаю, такого нет
источник
2020 December 28

Т

Тающий звук... in dlang.ru
Dark Hole
Я хочу так:
template Wrap(alias obj) {
 alias i = obj.i;
}

struct A {
 int i, j;
}

A a;
alias safeA = Wrap!a;
writeln(b.i); // => writeln(a.i);
writeln(b.j); // CT error
Шаблон нормально компилируется, а к значению обратиться никак не получается, выдаёт ошибку. Может надо в форуме ихнем спросить, почему не работает так. (Я ещё вместо "safeA" написал "b", а то мне вообще непонятно откуда "b" берётся)
источник

0

000Sanya in dlang.ru
Dark Hole
Не. Смысл как раз в том чтобы не копировать объект в принципе, а проксировать на него все запросы. То есть a.i и Wrap!a.i эквивалентны. Разница только в том что к некоторым членам доступа не будет.
opDispatch?
источник