Я не могу получить доступ к каким-либо функциям атомных типов TBB (fetch/load/etc.). Когда я смотрю на 'tbb/atomic.h', в каждом экземпляре макроса есть ошибки: '__TBB_DECL_ATOMIC (...)'
error: 'pure specifier (= 0) разрешен только для виртуальных функций'
Напротив, все можно получить и компилировать с использованием компилятора MSVC.
Это использует последнюю версию компилятора Intel C++, последнюю версию TBB, 64-битную ОС, 64-битную сборку. Даже глядя на макрокод, я не могу сказать, откуда это происходит. Я пропускаю флаг компилятора или что-то еще?
#define __TBB_DECL_ATOMIC(T) \
template<> struct atomic<T>: internal::atomic_impl_with_arithmetic<T,T,char> { \
atomic() = default; \
constexpr atomic(T arg): internal::atomic_impl_with_arithmetic<T,T,char>(arg) {} \
\
T operator=( T rhs ) {return store_with_release(rhs);} \
atomic<T>& operator=( const atomic<T>& rhs ) {store_with_release(rhs); return *this;} \
};
Нашел вопрос. Компилятор компилирует его просто отлично, но среда (VS2012) не распознает С++ 11, поэтому я не получаю Intellisense, и я получаю ложные ошибки squiggles.
default
? Это0
в одном компиляторе, а не в другом?