cmo
cmo

Reputation: 93

Can't use 'tbb/atomic.h' with Intel compiler

I am unable to access any functions of TBB's atomic types (fetch/load/etc.). When I look at 'tbb/atomic.h' there are errors at every instance of the macro: '__TBB_DECL_ATOMIC( ... )'

error: 'pure specifier ( = 0 ) allowed only on virtual functions'

On the contrary, everything can be accessed and compiles fine using the MSVC compiler.

This is using the latest version of the Intel C++ compiler, latest version of TBB, 64-bit OS, 64-bit build. Even looking at the macro's code I can't tell where this is coming from. Am I missing a compiler flag or something?

#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;}   \
    };

Upvotes: 0

Views: 543

Answers (1)

cmo
cmo

Reputation: 93

Found the issue. The compiler compiles it just fine, but the environment (VS2012) isn't recognizing the C++11 so I'm not getting Intellisense and I am getting false error squiggles.

Upvotes: 1

Related Questions