Size: a a a

2021 March 21

Т

Тающий звук... in dlang.ru
Приведи пример кода
источник

КП

Константин Пунш... in dlang.ru
struct SampleT(bool flag; bool flag2 = true){...}
alias Sample = SampleT!true;
источник

КП

Константин Пунш... in dlang.ru
Константин Пунш
struct SampleT(bool flag; bool flag2 = true){...}
alias Sample = SampleT!true;
Или везде прописыванием !() при создании
источник

Т

Тающий звук... in dlang.ru
Я сначала подумал, что ты как-то алиас в шаблонном параметре смог использовать...
источник

Т

Тающий звук... in dlang.ru
Может потом доработают
источник

Т

Тающий звук... in dlang.ru
Чтобы без алиаса работало
источник

КП

Константин Пунш... in dlang.ru
Вот еще что-то странное
import std.stdio;

void noth(void function() func)(){
 func();
}  

struct Sample{
 void function() func1;
 void function() func2;
}

void noth2(Sample smpl)(){
 smpl.func1();
 smpl.func2();
}

void main(){
 noth!({ writeln("Hello World"); });// ok
 noth2!(Sample(
   {
     writeln("Hello world");
   },
   {
     writeln("Hello world2");
   },
 ))();// NOPE! expression `__lambda2` is not a valid template value argument?!
}
источник

Е

Евгений in dlang.ru
Константин Пунш
Чот не работает
import std.stdio;

struct A(bool test = true){
 static if(test) enum why = "why";
 else enum why = "WHY";
 this(inout(char)[] str){
   writeln(why, ' ', str);
 }
}

void main(){
 A(":(");
}
Структура не функция, нельзя опускать скобки. Чтобы заработало надо вместо
A":(");
писать
A!()(":(");
И будет все работать.
источник

Е

Евгений in dlang.ru
А уже разобрались, походу.
источник

Е

Евгений in dlang.ru
Константин Пунш
Вот еще что-то странное
import std.stdio;

void noth(void function() func)(){
 func();
}  

struct Sample{
 void function() func1;
 void function() func2;
}

void noth2(Sample smpl)(){
 smpl.func1();
 smpl.func2();
}

void main(){
 noth!({ writeln("Hello World"); });// ok
 noth2!(Sample(
   {
     writeln("Hello world");
   },
   {
     writeln("Hello world2");
   },
 ))();// NOPE! expression `__lambda2` is not a valid template value argument?!
}
Это и правда странное. Похоже на баг.
https://run.dlang.io/is/dDLghn
источник

Е

Евгений in dlang.ru
если просто закомментить
noth!(s)();
все чудесно начинает компиляться и работать.
источник

Е

Евгений in dlang.ru
Похоже, что компилятор не умеет в CTFE работать с указателями функций.
источник

Е

Евгений in dlang.ru
Вот это тоже не работает: https://run.dlang.io/is/nqoCHy
источник

DH

Dark Hole in dlang.ru
Евгений
Похоже, что компилятор не умеет в CTFE работать с указателями функций.
Ну как бы да...
источник

Е

Евгений in dlang.ru
С другой стороны он с ними работает. Но не дает вставлять в качестве шаблонного параметра.
источник

Е

Евгений in dlang.ru
Не, какой-то булшит. Вот это работает: https://run.dlang.io/is/Lsu6h6
import std.stdio;

void foo(void function() func)() { func(); }
void main() {
   enum f = { writeln("hello"); };
   foo!(f)();
}
источник

КП

Константин Пунш... in dlang.ru
Константин Пунш
Вот еще что-то странное
import std.stdio;

void noth(void function() func)(){
 func();
}  

struct Sample{
 void function() func1;
 void function() func2;
}

void noth2(Sample smpl)(){
 smpl.func1();
 smpl.func2();
}

void main(){
 noth!({ writeln("Hello World"); });// ok
 noth2!(Sample(
   {
     writeln("Hello world");
   },
   {
     writeln("Hello world2");
   },
 ))();// NOPE! expression `__lambda2` is not a valid template value argument?!
}
НУ в принципе, это можно заменить за место структуры из указателей, просто структурой с функциями.
источник

КП

Константин Пунш... in dlang.ru
Константин Пунш
НУ в принципе, это можно заменить за место структуры из указателей, просто структурой с функциями.
Статическими методами
источник

DB

Dmitry Bubnenkov in dlang.ru
А где в Ди информация о типе объекта хранится? Интересуют примитивные и сложные типы.
Вот допустим int и class Human.
источник

DH

Dark Hole in dlang.ru
Dmitry Bubnenkov
А где в Ди информация о типе объекта хранится? Интересуют примитивные и сложные типы.
Вот допустим int и class Human.
У примитивных нет информации о типе. У классов есть typeinfo
источник