2016-04-17 2 views
2
public alias Message = int; 
void threadFunc(){ 
    import std.concurrency; 
    while(true){ 
     auto m = receiveOnly!(Message); 
    } 
} 

void main(){ 
    import core.thread; 
    import std.concurrency; 

    auto t = spawn(&threadFunc); 
} 

Error: ScopeDsymbol breeze.concurrency.task.__anonymous.__anonymous struct std.concurrency.Message is privateНевозможно использовать псевдоним с receiveOnly

Я не могу использовать псевдонимы с receiveOnly. Кажется, что D делает их частными по умолчанию, но я явно помечен Message как общедоступный, но ошибки все еще существуют.

+0

Какую версию компилятора вы используете? Он компилирует для меня просто отлично с 2.071.0. –

ответ

4

Проблема с именем псевдонима Message конфликтует с частной структурой в std.concurrency. Это было исправлено в выпуске 2.071.0. Таким образом, вы можете обновить или изменить имя псевдонима на что-то еще.

Подробнее: https://dlang.org/changelog/2.071.0.html#dip22 и здесь: http://www.schveiguy.com/blog/2016/03/import-changes-in-d-2-071/