Size: a a a

2021 March 31

EP

Egor Pugin in dlang.ru
он раньше был
источник

OB

Oleg B in dlang.ru
Egor Pugin
так вот двоякое исполнение это обычный constexpr
тогда почему ты упомянул consteval? чем оно отличается от constexpr?
источник

EP

Egor Pugin in dlang.ru
consteval будет честный на компиляции, constexpr не гарантируется
источник

EP

Egor Pugin in dlang.ru
ты про честный упомянул
источник

EP

Egor Pugin in dlang.ru
а по поводу этой статьи, разное содержимое классов можно делать так
https://godbolt.org/z/q9EKzE91d
источник

OB

Oleg B in dlang.ru
Egor Pugin
ты про честный упомянул
посчитать заранее это вообще незначительная часть ctfe
источник

EP

Egor Pugin in dlang.ru
Egor Pugin
а по поводу этой статьи, разное содержимое классов можно делать так
https://godbolt.org/z/q9EKzE91d
возможно автор не знал либо тут есть ограничения
источник

OB

Oleg B in dlang.ru
Egor Pugin
а по поводу этой статьи, разное содержимое классов можно делать так
https://godbolt.org/z/q9EKzE91d
ограниченно по функциональности на первый взгляд оч сильно
источник

EP

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

OB

Oleg B in dlang.ru
Egor Pugin
возможно автор не знал либо тут есть ограничения
вот так не сделать точно))
struct Foo(T) {
 static if (T.stringof.length > 3) T val;
 else string noval;
}
источник

OB

Oleg B in dlang.ru
Oleg B
вот так не сделать точно))
struct Foo(T) {
 static if (T.stringof.length > 3) T val;
 else string noval;
}
хотя эт просто демонстрация гибкости, а не реальный пример
источник

DH

Dark Hole in dlang.ru
Oleg B
вот так не сделать точно))
struct Foo(T) {
 static if (T.stringof.length > 3) T val;
 else string noval;
}
(я сомневаюсь что это кому-то понадобится)
источник

OB

Oleg B in dlang.ru
Dark Hole
(я сомневаюсь что это кому-то понадобится)
именно вычислять длину имени типа возможно не понадобится, а вот различное содержимое делать в зависимости от параметра шаблонизации эт постоянно
источник

EP

Egor Pugin in dlang.ru
Oleg B
вот так не сделать точно))
struct Foo(T) {
 static if (T.stringof.length > 3) T val;
 else string noval;
}
надо подумать
источник

OB

Oleg B in dlang.ru
при этом я могу на D любые проверки написать на нормальном D, сконструировать нужные поля с нужными именами
источник

DH

Dark Hole in dlang.ru
Oleg B
именно вычислять длину имени типа возможно не понадобится, а вот различное содержимое делать в зависимости от параметра шаблонизации эт постоянно
Вот somefunc.length ещё может пригодиться
источник

EP

Egor Pugin in dlang.ru
Oleg B
вот так не сделать точно))
struct Foo(T) {
 static if (T.stringof.length > 3) T val;
 else string noval;
}
тут ведь проверяется длина имени типа?
источник

OB

Oleg B in dlang.ru
Egor Pugin
тут ведь проверяется длина имени типа?
да
источник

OB

Oleg B in dlang.ru
Oleg B
при этом я могу на D любые проверки написать на нормальном D, сконструировать нужные поля с нужными именами
источник

OB

Oleg B in dlang.ru
здесь NF берёт тип (кстати можно ещё добавить проверку if (is(T == struct))), проходится по полям и делает поля с тем же именем, но уже Nullable типа
источник