Расширение структуры typedef (совместимость с VC ++ 11)

Я работаю над проектом с написанным и работает с компилятором Visual C ++ 2010 (и 2008). Я пытаюсь использовать новый VC ++ 11, но у меня проблема с уже реализованными функциями.
Мы уже реализовали typedef struct atomic_int а также memory_order но они добавили почти те же функции в VC 11, и я получаю эти ошибки

error C2011: 'std::memory_order' : 'enum' type redefinition
(D:\_work\wp-test\lib\Item.cpp) d:\_work\wp-test\lib\system\Atomic.h

Если я поймаю нашу реализацию в #if statment

#if _MSC_VER >= 1700
#include <atomic>
#else
//out implementation
namspace std{
typedef enum memory_order
{
memory_order_relaxed,
...
} memory_order;
typedef struct atomic_int{
...
}
}
#endif

Кажется, это работает, но одна функция, которая не реализована в VC 11, отсутствует, а другая функция не может преобразовать параметр

error C2039: 'compare_swap' : is not a member of 'std::atomic_int'
D:\_work\wp-test\lib\network\ConnectionSocket.cpp

error C2664: 'std::atomic_int::atomic_int(const std::atomic_int &)' :
cannot convert parameter 1 from 'int' to 'const std::atomic_int &'
(D:\_work\wp-test\lib\Item.cpp) D:\_work\wp-test\lib\system\Cache.h

Пожалуйста, помогите мне найти решение … как переопределить весь atomic_int из VC ++ 11, или как добавить memeber в?
Спасибо

0

Решение

Так compare_swap функция является старым черновым именем std :: atomic_compare_exchange_weak / strong in. Это уже реализовано в C ++ 11, но мы использовали старое имя.

Еще одна ошибка C2664 также проблема старого проекта (отсутствует перегруженный нагрузка метод).

1

Другие решения

Других решений пока нет …