2015-06-25 2 views
4
#include <iostream> 
#include <atomic> 
using namespace std;  
typedef enum day{sun =0, mon, tue}day;  

int main() { 
    atomic<day> a(sun); 
    cout<<a<<endl; 
    return 0; 
} 

Приведенный выше код попытается создать переменную enum как атомный тип. Но я получаю следующую ошибку.не может создать тип перечисления как атомный

undefined reference to std::atomic<day>::operator day() const 

Имеет ли атомный тип поддержки для перечисления? или любая ошибка в моем синтаксисе? Я использую компилятор g ++, работающий на 32-разрядной машине ubuntu 12.0.4. Спасибо.

+1

Там нет необходимости для C-фразеологического 'ЬурейеГо enum' в C++, хотя я сомневаюсь, что это проблема. – Bathsheba

+0

Какая версия g ++? Я могу только воспроизвести Wandbox с GCC 4.6. –

+0

Я бы сказал, что это ошибка компилятора. 'atomic' может использоваться для всех простых старых типов данных и включает перечисления. – Bathsheba

ответ

1

Я скомпилировал тот же код с онлайн-компилятором, который поддерживает C++ 11 & C++ 14. У меня не было никаких проблем.

atomic не доступен до стандартов C++ 11.

Для справки: http://ideone.com/fork/Pe4gVt

+0

что вы используете? my - g ++ 4.6.3. – Kumar