Я создал многопоточный симулятор, который в значительной степени опирается на нативное сообщение, передаваемое между потоками (не говорите мне, чтобы я шел однопоточным, это для моей диссертации на D, и мне нужно, чтобы это сработало)* после очень резкого клуджа, вовлекающего много бросков объектов в shared
.у которого были некоторые уродливые ошибки в состоянии гонки.Я решил создать непрозрачный тип, представляющий объект, который может принимать сообщения, которые можно передавать без всякого приведения ...
нет такой удачи
struct OpaqueFaseSim{
Tid tid;
void send(...){...}
}
void foo(){
Tid tid;
long time;
OpaqueFaseSim ofs;
//...
tid.send(ofs,time);//Error: static assert "Aliases to mutable thread-local data not allowed."
}
почему можноЯ передаю Tid, но не структуру, содержащую только Tid?
и как я могу это исправить