C++ compilation issue with <emmintrin.h> on Linux GCC - c++

Tried google and searched here, but no luck.
I am trying to port some windows codes that use to Linux.
Then I get a huge amount of compilation errors.
All I did was
#include <emmintrin.h>
And then :
g++ -c -pipe -march=i686 -mtune=generic -O2 -pipe -D_REENTRANT -w -D__SSE__ -D__SSE2__ -D__MMX__ -I/usr/share/qt/mkspecs/linux-g++ -I. -o .obj/Test.o Test.cpp
In file included from /usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/xmmintrin.h:36:0,
from /usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/emmintrin.h:36,
from Test.cpp:33:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘void _mm_empty()’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:49:24: error: ‘__builtin_ia32_emms’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_cvtsi32_si64(int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:62:54: error: ‘__builtin_ia32_vec_init_v2si’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘int _mm_cvtsi64_si32(__vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:105:53: error: ‘__builtin_ia32_vec_ext_v2si’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_packs_pi16(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:144:69: error: ‘__builtin_ia32_packsswb’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_packs_pi32(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:159:69: error: ‘__builtin_ia32_packssdw’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_packs_pu16(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:174:69: error: ‘__builtin_ia32_packuswb’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_unpackhi_pi8(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:188:70: error: ‘__builtin_ia32_punpckhbw’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_unpackhi_pi16(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:202:70: error: ‘__builtin_ia32_punpckhwd’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_unpackhi_pi32(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:216:70: error: ‘__builtin_ia32_punpckhdq’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_unpacklo_pi8(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:230:70: error: ‘__builtin_ia32_punpcklbw’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_unpacklo_pi16(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:244:70: error: ‘__builtin_ia32_punpcklwd’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_unpacklo_pi32(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:258:70: error: ‘__builtin_ia32_punpckldq’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_add_pi8(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:271:66: error: ‘__builtin_ia32_paddb’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_add_pi16(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:284:66: error: ‘__builtin_ia32_paddw’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_add_pi32(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:297:66: error: ‘__builtin_ia32_paddd’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_add_si64(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:311:66: error: ‘__builtin_ia32_paddq’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_adds_pi8(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:320:67: error: ‘__builtin_ia32_paddsb’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_adds_pi16(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:334:67: error: ‘__builtin_ia32_paddsw’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_adds_pu8(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:348:68: error: ‘__builtin_ia32_paddusb’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_adds_pu16(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:362:68: error: ‘__builtin_ia32_paddusw’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_sub_pi8(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:375:66: error: ‘__builtin_ia32_psubb’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_sub_pi16(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:388:66: error: ‘__builtin_ia32_psubw’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_sub_pi32(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:401:66: error: ‘__builtin_ia32_psubd’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_sub_si64(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:415:66: error: ‘__builtin_ia32_psubq’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_subs_pi8(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:424:67: error: ‘__builtin_ia32_psubsb’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_subs_pi16(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:438:67: error: ‘__builtin_ia32_psubsw’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_subs_pu8(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:452:68: error: ‘__builtin_ia32_psubusb’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_subs_pu16(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:466:68: error: ‘__builtin_ia32_psubusw’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_madd_pi16(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:481:68: error: ‘__builtin_ia32_pmaddwd’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_mulhi_pi16(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:495:67: error: ‘__builtin_ia32_pmulhw’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_mullo_pi16(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:509:67: error: ‘__builtin_ia32_pmullw’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_sll_pi16(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:522:68: error: ‘__builtin_ia32_psllw’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_slli_pi16(__vector(2) int, int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:534:61: error: ‘__builtin_ia32_psllwi’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_sll_pi32(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:547:68: error: ‘__builtin_ia32_pslld’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_slli_pi32(__vector(2) int, int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:559:61: error: ‘__builtin_ia32_pslldi’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_sll_si64(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:572:68: error: ‘__builtin_ia32_psllq’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_slli_si64(__vector(2) int, int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:584:61: error: ‘__builtin_ia32_psllqi’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_sra_pi16(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:597:68: error: ‘__builtin_ia32_psraw’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_srai_pi16(__vector(2) int, int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:609:61: error: ‘__builtin_ia32_psrawi’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_sra_pi32(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:622:68: error: ‘__builtin_ia32_psrad’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_srai_pi32(__vector(2) int, int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:634:61: error: ‘__builtin_ia32_psradi’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_srl_pi16(__vector(2) int, __vector(2) int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:647:68: error: ‘__builtin_ia32_psrlw’ was not declared in this scope
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h: In function ‘__vector(2) int _mm_srli_pi16(__vector(2) int, int)’:
/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/mmintrin.h:659:61: error: ‘__builtin_ia32_psrlwi’ was not declared in this scope
Am I missing some compiler option here ? Or I need to include some other headers ?

I believe you need to allow SSE instructions using -msse.

Related

Error when using TensorFlow C++ API

Here are what I've Done:
(1)build tensorflow from source(with bazel)
(2)build eigen from source
(3)build protobuf from souce
(4)copy bazel-genfiles, tensorflow, third_party to workdir/include/tf
(5)copy eigen3 to workdir/include
(6)compile my cpp file in workdir with:g++ -std=c++11 -o -I./include/tf -I./include/eigen3 -I./include/tf/bazel-genfiles DeepLearningModel.cpp
And here are what I got:
In file included from ./include/tf/tensorflow/core/framework/allocator.h:25:0,
from ./include/tf/tensorflow/core/framework/tensor.h:20,
from ./include/tf/tensorflow/core/public/session.h:24,
from DeepLearningModel.h:5,
from DeepLearningModel.cpp:1:
./include/tf/tensorflow/core/framework/type_traits.h:69:52: error: ‘half’ is not a member of ‘Eigen’
std::is_trivial<T>::value || std::is_same<T, Eigen::half>::value ||
^
./include/tf/tensorflow/core/framework/type_traits.h:69:52: error: ‘half’ is not a member of ‘Eigen’
./include/tf/tensorflow/core/framework/type_traits.h:69:63: error: template argument 2 is invalid
std::is_trivial<T>::value || std::is_same<T, Eigen::half>::value ||
^
DeepLearningModel.cpp: In member function ‘int DNNModel::decode_from_hex(char*, InputFeature&)’:
DeepLearningModel.cpp:58:34: error: ‘Tensorhape’ is not a member of ‘tensorflow’
Tensor x(tensorflow::DT_DOUBLE, tensorflow::Tensorhape({input.batch_size, input.timestep, input.feature_len}));
^
DeepLearningModel.cpp:61:22: error: ‘InputFeature {aka struct sInputFeature}’ has no member named ‘batch’
for(int i=0;i<input.batch;i++){
^
DeepLearningModel.cpp: In member function ‘int DNNModel::predict(const char*, int&)’:
DeepLearningModel.cpp:101:55: error: no matching function for call to ‘DNNModel::decode_from_hex(const char*&, InputFeature*)’
int status_decode = decode_from_hex(input_hex, &input);
^
DeepLearningModel.cpp:42:5: note: candidate: int DNNModel::decode_from_hex(char*, InputFeature&)
int DNNModel::decode_from_hex(char *input_hex, InputFeature &input){
^
DeepLearningModel.cpp:42:5: note: no known conversion for argument 2 from ‘InputFeature* {aka sInputFeature*}’ to ‘InputFeature& {aka sInputFeature&}’
DeepLearningModel.cpp:106:7: error: expected unqualified-id before ‘<’ token
std::<vector<std::pair<std::string, tensorflow:Tensor> > input_vec;
^
DeepLearningModel.cpp:106:8: error: ‘vector’ was not declared in this scope
std::<vector<std::pair<std::string, tensorflow:Tensor> > input_vec;
^
DeepLearningModel.cpp:106:8: note: suggested alternatives:
In file included from /usr/include/c++/5/vector:64:0,
from ./include/tf/tensorflow/core/public/session.h:20,
from DeepLearningModel.h:5,
from DeepLearningModel.cpp:1:
/usr/include/c++/5/bits/stl_vector.h:214:11: note: ‘std::vector’
class vector : protected _Vector_base<_Tp, _Alloc>
^
/usr/include/c++/5/bits/stl_vector.h:214:11: note: ‘std::vector’
DeepLearningModel.cpp:106:55: error: template argument 2 is invalid
std::<vector<std::pair<std::string, tensorflow:Tensor> > input_vec;
^
DeepLearningModel.cpp:106:59: error: ‘input_vec’ was not declared in this scope
std::<vector<std::pair<std::string, tensorflow:Tensor> > input_vec;
^
DeepLearningModel.cpp:107:31: error: missing template arguments before ‘,’ token
input_vec.push_back(std::pair,std::string, tensorflow::Tensor> >(&input_node, input.data));
^
DeepLearningModel.cpp:107:43: error: expected primary-expression before ‘,’ token
input_vec.push_back(std::pair,std::string, tensorflow::Tensor> >(&input_node, input.data));
^
DeepLearningModel.cpp:107:63: error: expected primary-expression before ‘>’ token
input_vec.push_back(std::pair,std::string, tensorflow::Tensor> >(&input_node, input.data));
^
DeepLearningModel.cpp:107:65: error: expected primary-expression before ‘>’ token
input_vec.push_back(std::pair,std::string, tensorflow::Tensor> >(&input_node, input.data));
^
In file included from ./include/eigen3/unsupported/Eigen/CXX11/Tensor:113:0,
from ./include/tf/third_party/eigen3/unsupported/Eigen/CXX11/Tensor:1,
from ./include/tf/tensorflow/core/framework/tensor.h:19,
from ./include/tf/tensorflow/core/public/session.h:24,
from DeepLearningModel.h:5,
from DeepLearningModel.cpp:1:
./include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMap.h: In instantiation of ‘Eigen::TensorMap<PlainObjectType, Options_>::Scalar& Eigen::TensorMap<PlainObjectType, Options_>::operator()(Eigen::TensorMap<PlainObjectType, Options_>::Index, IndexTypes ...) [with IndexTypes = {int}; PlainObjectType = Eigen::Tensor<double, 1, 1, long int>; int Options_ = 16; Eigen::TensorMap<PlainObjectType, Options_>::Scalar = double; Eigen::TensorMap<PlainObjectType, Options_>::Index = long int]’:
DeepLearningModel.cpp:120:15: required from here
./include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMap.h:227:7: error: static assertion failed: Number of indices used to access a tensor coefficient must be equal to the rank of the tensor.
static_assert(sizeof...(otherIndices) + 1 == NumIndices || NumIndices == Dynamic, "Number of indices used to access a tensor coefficient must be equal to the rank of the tensor.");
^
./include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMap.h:230:110: error: no matching function for call to ‘Eigen::DSizes<long int, 1>::IndexOfRowMajor(Eigen::array<long int, 2ul>)’
const Index index = m_dimensions.IndexOfRowMajor(array<Index, NumDims>{{firstIndex, otherIndices...}});
^
In file included from ./include/eigen3/unsupported/Eigen/CXX11/Tensor:68:0,
from ./include/tf/third_party/eigen3/unsupported/Eigen/CXX11/Tensor:1,
from ./include/tf/tensorflow/core/framework/tensor.h:19,
from ./include/tf/tensorflow/core/public/session.h:24,
from DeepLearningModel.h:5,
from DeepLearningModel.cpp:1:
./include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h:336:52: note: candidate: DenseIndex Eigen::DSizes<DenseIndex, NumDims>::IndexOfRowMajor(Eigen::array<DenseIndex, NumDims>&) const [with DenseIndex = long int; int NumDims = 1; Eigen::array<DenseIndex, NumDims> = std::array<long int, 1ul>]
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DenseIndex IndexOfRowMajor(const array<DenseIndex, NumDims>& indices) const {
^
./include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h:336:52: note: no known conversion for argument 1 from ‘Eigen::array<long int, 2ul> {aka std::array<long int, 2ul>}’ to ‘Eigen::array<long int, 1ul>& {aka const std::array<long int, 1ul>&}’
In file included from ./include/eigen3/unsupported/Eigen/CXX11/Tensor:113:0,
from ./include/tf/third_party/eigen3/unsupported/Eigen/CXX11/Tensor:1,
from ./include/tf/tensorflow/core/framework/tensor.h:19,
from ./include/tf/tensorflow/core/public/session.h:24,
from DeepLearningModel.h:5,
from DeepLearningModel.cpp:1:
./include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMap.h:233:110: error: no matching function for call to ‘Eigen::DSizes<long int, 1>::IndexOfColMajor(Eigen::array<long int, 2ul>)’
const Index index = m_dimensions.IndexOfColMajor(array<Index, NumDims>{{firstIndex, otherIndices...}});
^
In file included from ./include/eigen3/unsupported/Eigen/CXX11/Tensor:68:0,
from ./include/tf/third_party/eigen3/unsupported/Eigen/CXX11/Tensor:1,
from ./include/tf/tensorflow/core/framework/tensor.h:19,
from ./include/tf/tensorflow/core/public/session.h:24,
from DeepLearningModel.h:5,
from DeepLearningModel.cpp:1:
./include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h:333:52: note: candidate: DenseIndex Eigen::DSizes<DenseIndex, NumDims>::IndexOfColMajor(Eigen::array<DenseIndex, NumDims>&) const [with DenseIndex = long int; int NumDims = 1; Eigen::array<DenseIndex, NumDims> = std::array<long int, 1ul>]
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DenseIndex IndexOfColMajor(const array<DenseIndex, NumDims>& indices) const {
^
./include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h:333:52: note: no known conversion for argument 1 from ‘Eigen::array<long int, 2ul> {aka std::array<long int, 2ul>}’ to ‘Eigen::array<long int, 1ul>& {aka const std::array<long int, 1ul>&}’
What's wrong with Eigen and how can I fix it?
Help please...

Can't compile wsseapi.c using gSOAP on Linux

On a linux system, I want to create a client app using gSOAP-2.8.8 that interacts with a SOAP service. After exposing the WSDL file, I am unable to compile wsseapi.c.
I am using this command:
g++ -c wsseapi.c -DWITH_OPENSSL -DWITH_DOM
And it displays the following errors:
wsseapi.c: In function âint soap_wsse_add_SecurityContextToken(soap*, const char*, const char*)â:
wsseapi.c:2238: error: âstruct _wsse__Securityâ has no member named âwsc__SecurityContextTokenâ
wsseapi.c:2239: error: âstruct _wsse__Securityâ has no member named âwsc__SecurityContextTokenâ
wsseapi.c:2242: error: âstruct _wsse__Securityâ has no member named âwsc__SecurityContextTokenâ
wsseapi.c:2247: error: âstruct _wsse__Securityâ has no member named âwsc__SecurityContextTokenâ
wsseapi.c:2248: error: âstruct _wsse__Securityâ has no member named âwsc__SecurityContextTokenâ
wsseapi.c: In function âconst char* soap_wsse_get_SecurityContextToken(soap*)â:
wsseapi.c:2263: error: âstruct _wsse__Securityâ has no member named âwsc__SecurityContextTokenâ
wsseapi.c:2263: error: âstruct _wsse__Securityâ has no member named âwsc__SecurityContextTokenâ
wsseapi.c:2265: error: âstruct _wsse__Securityâ has no member named âwsc__SecurityContextTokenâ
wsseapi.c:2266: error: âstruct _wsse__Securityâ has no member named âwsc__SecurityContextTokenâ
wsseapi.c: In function âint soap_wsse_add_SignedInfo_Reference(soap*, const char*, const char*, const char*, int, const char*)â:
wsseapi.c:2312: error: declaration of C function âint soap_wsse_add_SignedInfo_Reference(soap*, const char*, const char*, const char*, int, const char*)â conflicts with
wsseapi.h:161: error: previous declaration âint soap_wsse_add_SignedInfo_Reference(soap*, const char*, const char*, const char*, const char*)â here
wsseapi.c: In function âint soap_wsse_add_SignedInfo_Reference(soap*, const char*, const char*, const char*, int, const char*)â:
wsseapi.c:2318: error: cannot convert âds__ReferenceType**â to âds__ReferenceType*â in assignment
wsseapi.c:2373: error: no match for âoperator=â in â*(signedInfo->ds__SignedInfoType::Reference + ((ds__ReferenceType*)(((long unsigned int)signedInfo->ds__SignedInfoType::__sizeReference) * 48ul))) = referenceâ
soapStub.h:296: note: candidates are: ds__ReferenceType& ds__ReferenceType::operator=(const ds__ReferenceType&)
wsseapi.c: In function âint soap_wsse_verify_SignedInfo(soap*)â:
wsseapi.c:2723: error: cannot convert âds__ReferenceTypeâ to âds__ReferenceType*â in initialization
wsseapi.c: In function âint soap_wsse_verify_digest(soap*, int, int, const char*, unsigned char*)â:
wsseapi.c:2863: error: âSOAP_WSSE_IGNORE_EXTRA_REFSâ was not declared in this scope
wsseapi.c: In function âint soap_wsse_add_SignedInfo_Reference(soap*, const char*, const char*, const char*, int, const char*)â:
wsseapi.c:3056: error: âstruct ds__X509DataTypeâ has no member named âX509IssuerSerialâ
wsseapi.c:3057: error: âstruct ds__X509DataTypeâ has no member named âX509IssuerSerialâ
wsseapi.c:3058: error: âstruct ds__X509DataTypeâ has no member named âX509IssuerSerialâ
wsseapi.c:3059: error: âstruct ds__X509DataTypeâ has no member named âX509IssuerSerialâ
wsseapi.c: In function âint soap_wsse_add_EncryptedKey(soap*, int, const char*, X509*, const char*, const char*, const char*)â:
wsseapi.c:3206: error: declaration of C function âint soap_wsse_add_EncryptedKey(soap*, int, const char*, X509*, const char*, const char*, const char*)â conflicts with
wsseapi.h:207: error: previous declaration âint soap_wsse_add_EncryptedKey(soap*, const char*, X509*, const char*)â here
wsseapi.c: In function âint soap_wsse_add_EncryptedKey(soap*, int, const char*, X509*, const char*, const char*, const char*)â:
wsseapi.c:3207: error: invalid conversion from âintâ to âconst char*â
wsseapi.c:3207: error: cannot convert âconst char*â to âX509*â for argument â3â to âint soap_wsse_add_EncryptedKey_encrypt_only(soap*, const char*, X509*, const char*, const char*)â
wsseapi.c: In function âint soap_wsse_add_EncryptedKey(soap*, int, const char*, X509*, const char*, const char*, const char*)â:
wsseapi.c:3250: error: declaration of C function âint soap_wsse_add_EncryptedKey_encrypt_only(soap*, int, const char*, X509*, const char*, const char*, const char*, const char*)â conflicts with
wsseapi.h:208: error: previous declaration âint soap_wsse_add_EncryptedKey_encrypt_only(soap*, const char*, X509*, const char*, const char*)â here
wsseapi.c: In function âint soap_wsse_add_EncryptedKey_encrypt_only(soap*, int, const char*, X509*, const char*, const char*, const char*, const char*)â:
wsseapi.c:3294: error: âstruct ds__X509DataTypeâ has no member named âX509IssuerSerialâ
wsseapi.c:3296: error: âstruct ds__X509DataTypeâ has no member named âX509IssuerSerialâ
wsseapi.c:3297: error: âstruct ds__X509DataTypeâ has no member named âX509IssuerSerialâ
wsseapi.c:3298: error: âstruct ds__X509DataTypeâ has no member named âX509IssuerSerialâ
wsseapi.c:3348: error: âstruct soap_wsse_dataâ has no member named âenco_keynameâ
wsseapi.c: In function âint soap_wsse_verify_EncryptedKey(soap*)â:
wsseapi.c:3434: error: invalid conversion from âint*â to âintâ
wsseapi.c:3445: error: invalid conversion from âint*â to âintâ
wsseapi.c:3454: error: âstruct ds__X509DataTypeâ has no member named âX509SubjectNameâ
wsseapi.c:3455: error: âstruct ds__X509DataTypeâ has no member named âX509SubjectNameâ
wsseapi.c:3458: error: invalid conversion from âint*â to âintâ
wsseapi.c: In function âint soap_wsse_add_EncryptedData_KeyInfo_KeyName(soap*, const char*)â:
wsseapi.c:3640: error: âstruct soap_wsse_dataâ has no member named âenco_keynameâ
wsseapi.c: In function âint soap_wsse_init(soap*, soap_wsse_data*, const void* (*)(soap*, int*, const char*, int*))â:
wsseapi.c:3965: error: âstruct soap_wsse_dataâ has no member named âenco_keynameâ
wsseapi.c:3979: error: invalid conversion from âconst void* (*)(soap*, int*, const char*, int*)â to âconst void* (*)(soap*, int, const char*, int*)â
wsseapi.c: In function âint soap_wsse_copy(soap*, soap_plugin*, soap_plugin*)â:
wsseapi.c:3998: error: invalid conversion from âconst void* (*)(soap*, int, const char*, int*)â to âconst void* (*)(soap*, int*, const char*, int*)â
wsseapi.c:3998: error: initializing argument 3 of âint soap_wsse_init(soap*, soap_wsse_data*, const void* (*)(soap*, int*, const char*, int*))â
wsseapi.c: In function âsize_t soap_wsse_verify_element(soap*, const char*, const char*)â:
wsseapi.c:4267: error: cannot convert âds__ReferenceTypeâ to âds__ReferenceType*â in initialization
wsseapi.c: In function âint soap_wsse_encrypt_begin(soap*, const char*, int, const char*, const char*, const unsigned char*)â:
wsseapi.c:4542: error: declaration of C function âint soap_wsse_encrypt_begin(soap*, const char*, int, const char*, const char*, const unsigned char*)â conflicts with
wsseapi.h:221: error: previous declaration âint soap_wsse_encrypt_begin(soap*, const char*, const char*, const char*, const unsigned char*)â here
wsseapi.c: In function âint soap_wsse_decrypt_begin(soap*, const unsigned char*)â:
wsseapi.c:4688: error: invalid conversion from âint*â to âintâ
wsseapi.c:4700: error: invalid conversion from âint*â to âintâ
wsseapi.c: In function âint soap_wsse_element_begin_out(soap*, const char*)â:
wsseapi.c:4852: error: âstruct soap_wsse_dataâ has no member named âenco_keynameâ
wsseapi.c:4864: error: âstruct soap_wsse_dataâ has no member named âenco_keynameâ
wsseapi.c: In function âint soap_wsse_preparefinalrecv(soap*)â:
wsseapi.c:5100: error: invalid conversion from âint*â to âintâ
wsseapi.c:5120: error: invalid conversion from âint*â to âintâ
It will be great if some one can help me to communicate with my web service using C++. I can add the link for the WSDL.

error building simple MongoDB C++ client example

I've installed MongoDB on ubuntu 12.10, tested on the mongo shell and it works ok.
Then, i installed cxx-driver from http://dl.mongodb.org/dl/cxx-driver/
Here is a MongoDB client example that i'm trying to build:
#include <cstdlib>
#include <iostream>
#include "mongo/bson/bsonobjbuilder.h"
#include "mongo/client/dbclient.h"
#include "mongo/client/dbclientcursor.h"
#include <boost/shared_ptr.hpp>
using namespace mongo;
void run() {
DBClientConnection c;
c.connect("localhost");
boost::shared_ptr<DBClientCursor> cursor =
c.query("test", BSONObj());
while (cursor->more())
std::cout << cursor->next().toString() << std::endl;
}
int main() {
try {
run();
std::cout << "connected ok" << std::endl;
} catch( const DBException &e ) {
std::cout << "caught " << e.what() << std::endl;
}
return EXIT_SUCCESS;
}
But this fails with this error:
In file included from /home/lurscher/third_party/usr/local/include/mongo/bson/oid.h:22:0,
from /home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h:25,
from /home/lurscher/third_party/usr/local/include/mongo/bson/bsonobjbuilder.h:29,
from test_mongo.cpp:3:
/home/lurscher/third_party/usr/local/include/mongo/bson/util/misc.h: In member function ‘time_t mongo::Date_t::toTimeT() const’:
/home/lurscher/third_party/usr/local/include/mongo/bson/util/misc.h:96:42: error: ‘verify’ was not declared in this scope
In file included from /home/lurscher/third_party/usr/local/include/mongo/util/hex.h:22:0,
from /home/lurscher/third_party/usr/local/include/mongo/bson/oid.h:23,
from /home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h:25,
from /home/lurscher/third_party/usr/local/include/mongo/bson/bsonobjbuilder.h:29,
from test_mongo.cpp:3:
/home/lurscher/third_party/usr/local/include/mongo/bson/util/builder.h: In member function ‘void mongo::StringBuilderImpl<Allocator>::appendDoubleNice(double)’:
/home/lurscher/third_party/usr/local/include/mongo/bson/util/builder.h:302:28: error: there are no arguments to ‘verify’ that depend on a template parameter, so a declaration of ‘verify’ must be available [-fpermissive]
/home/lurscher/third_party/usr/local/include/mongo/bson/util/builder.h:302:28: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
/home/lurscher/third_party/usr/local/include/mongo/bson/util/builder.h:303:33: error: there are no arguments to ‘verify’ that depend on a template parameter, so a declaration of ‘verify’ must be available [-fpermissive]
/home/lurscher/third_party/usr/local/include/mongo/bson/util/builder.h: In member function ‘mongo::StringBuilderImpl<Allocator>& mongo::StringBuilderImpl<Allocator>::SBNUM(T, int, const char*)’:
/home/lurscher/third_party/usr/local/include/mongo/bson/util/builder.h:336:28: error: there are no arguments to ‘verify’ that depend on a template parameter, so a declaration of ‘verify’ must be available [-fpermissive]
/home/lurscher/third_party/usr/local/include/mongo/bson/util/builder.h:337:33: error: there are no arguments to ‘verify’ that depend on a template parameter, so a declaration of ‘verify’ must be available [-fpermissive]
In file included from /home/lurscher/third_party/usr/local/include/mongo/bson/oid.h:23:0,
from /home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h:25,
from /home/lurscher/third_party/usr/local/include/mongo/bson/bsonobjbuilder.h:29,
from test_mongo.cpp:3:
/home/lurscher/third_party/usr/local/include/mongo/util/hex.h: In function ‘int mongo::fromHex(char)’:
/home/lurscher/third_party/usr/local/include/mongo/util/hex.h:33:23: error: ‘verify’ was not declared in this scope
In file included from /home/lurscher/third_party/usr/local/include/mongo/bson/bsonobjbuilder.h:29:0,
from test_mongo.cpp:3:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h: In member function ‘const char* mongo::BSONElement::codeWScopeCode() const’:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h:265:70: error: ‘massert’ was not declared in this scope
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h: In member function ‘int mongo::BSONElement::codeWScopeCodeLen() const’:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h:272:70: error: ‘massert’ was not declared in this scope
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h: In member function ‘const char* mongo::BSONElement::binData(int&) const’:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h:309:39: error: ‘verify’ was not declared in this scope
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h: In member function ‘mongo::BinDataType mongo::BSONElement::binDataType() const’:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h:328:39: error: ‘verify’ was not declared in this scope
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h: In member function ‘const char* mongo::BSONElement::regex() const’:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h:335:35: error: ‘verify’ was not declared in this scope
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h: In member function ‘const char* mongo::BSONElement::dbrefNS() const’:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h:409:63: error: ‘uassert’ was not declared in this scope
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h: In member function ‘const mongo::OID& mongo::BSONElement::dbrefOID() const’:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h:414:63: error: ‘uassert’ was not declared in this scope
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h: In constructor ‘mongo::BSONElement::BSONElement(const char*, int)’:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h:439:72: error: ‘uassert’ was not declared in this scope
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h: In member function ‘const mongo::BSONElement& mongo::BSONElement::chk(bool) const’:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h:477:83: error: ‘massert’ was not declared in this scope
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h: In member function ‘int mongo::BSONElement::canonicalType() const’:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h:522:21: error: ‘verify’ was not declared in this scope
In file included from /home/lurscher/third_party/usr/local/include/mongo/bson/bsonobjbuilder.h:30:0,
from test_mongo.cpp:3:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonobj.h: In member function ‘void mongo::BSONObj::appendSelfToBufBuilder(mongo::BufBuilder&) const’:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonobj.h:456:31: error: ‘verify’ was not declared in this scope
In file included from /home/lurscher/third_party/usr/local/include/mongo/bson/bsonobjbuilder.h:31:0,
from test_mongo.cpp:3:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonmisc.h: At global scope:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonmisc.h:173:9: error: ‘auto_ptr’ in namespace ‘std’ does not name a type
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonmisc.h: In member function ‘bool mongo::BSONObjBuilderValueStream::haveSubobj() const’:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonmisc.h:171:42: error: ‘_subobj’ was not declared in this scope
In file included from test_mongo.cpp:3:0:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonobjbuilder.h: In member function ‘virtual mongo::BSONObjBuilder& mongo::BSONObjBuilder::append(const mongo::BSONElement&)’:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonobjbuilder.h:124:30: error: ‘verify’ was not declared in this scope
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonobjbuilder.h: In member function ‘virtual mongo::BSONObjBuilder& mongo::BSONObjBuilder::appendAs(const mongo::BSONElement&, const mongo::StringData&)’:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonobjbuilder.h:131:30: error: ‘verify’ was not declared in this scope
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonobjbuilder.h: In member function ‘mongo::BSONObjBuilder& mongo::BSONObjBuilder::appendObject(const mongo::StringData&, const char*, int)’:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonobjbuilder.h:148:29: error: ‘verify’ was not declared in this scope
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonobjbuilder.h: In member function ‘virtual mongo::BSONObj mongo::BSONObjBuilder::obj()’:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonobjbuilder.h:554:65: error: ‘massert’ was not declared in this scope
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonobjbuilder.h: In member function ‘char* mongo::BSONObjBuilder::decouple(int&)’:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonobjbuilder.h:589:23: error: ‘verify’ was not declared in this scope
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonobjbuilder.h: In member function ‘mongo::Labeler mongo::BSONObjBuilder::operator<<(const mongo::Labeler::Label&)’:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonobjbuilder.h:629:74: error: ‘massert’ was not declared in this scope
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonobjbuilder.h: In member function ‘void mongo::BSONArrayBuilder::fill(int)’:
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonobjbuilder.h:836:102: error: ‘uassert’ was not declared in this scope
In file included from /home/lurscher/third_party/usr/local/include/mongo/db/jsobj.h:41:0,
from /home/lurscher/third_party/usr/local/include/mongo/client/authentication_table.h:23,
from /home/lurscher/third_party/usr/local/include/mongo/client/dbclientinterface.h:26,
from /home/lurscher/third_party/usr/local/include/mongo/client/connpool.h:23,
from /home/lurscher/third_party/usr/local/include/mongo/client/dbclient.h:32,
from test_mongo.cpp:4:
/home/lurscher/third_party/usr/local/include/mongo/db/../bson/bson-inl.h: In member function ‘void mongo::BSONObjBuilderValueStream::endField(const char*)’:
/home/lurscher/third_party/usr/local/include/mongo/db/../bson/bson-inl.h:359:9: error: ‘_subobj’ was not declared in this scope
/home/lurscher/third_party/usr/local/include/mongo/db/../bson/bson-inl.h: In member function ‘mongo::BSONObjBuilder* mongo::BSONObjBuilderValueStream::subobj()’:
/home/lurscher/third_party/usr/local/include/mongo/db/../bson/bson-inl.h:365:13: error: ‘_subobj’ was not declared in this scope
/home/lurscher/third_party/usr/local/include/mongo/db/../bson/bson-inl.h:366:16: error: ‘_subobj’ was not declared in this scope
test_mongo.cpp: In function ‘void run()’:
test_mongo.cpp:15:28: error: conversion from ‘std::auto_ptr<mongo::DBClientCursor>’ to non-scalar type ‘boost::shared_ptr<mongo::DBClientCursor>’ requested
In file included from /home/lurscher/third_party/usr/local/include/mongo/util/hex.h:22:0,
from /home/lurscher/third_party/usr/local/include/mongo/bson/oid.h:23,
from /home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h:25,
from /home/lurscher/third_party/usr/local/include/mongo/bson/bsonobjbuilder.h:29,
from test_mongo.cpp:3:
/home/lurscher/third_party/usr/local/include/mongo/bson/util/builder.h: In member function ‘void mongo::StringBuilderImpl<Allocator>::appendDoubleNice(double) [with Allocator = mongo::TrivialAllocator]’:
/home/lurscher/third_party/usr/local/include/mongo/db/../bson/bson-inl.h:702:42: instantiated from here
/home/lurscher/third_party/usr/local/include/mongo/bson/util/builder.h:302:13: error: ‘verify’ was not declared in this scope
/home/lurscher/third_party/usr/local/include/mongo/bson/util/builder.h: In member function ‘mongo::StringBuilderImpl<Allocator>& mongo::StringBuilderImpl<Allocator>::SBNUM(T, int, const char*) [with T = int, Allocator = mongo::TrivialAllocator, mongo::StringBuilderImpl<Allocator> = mongo::StringBuilderImpl<mongo::TrivialAllocator>]’:
/home/lurscher/third_party/usr/local/include/mongo/bson/util/builder.h:272:53: instantiated from ‘mongo::StringBuilderImpl<Allocator>& mongo::StringBuilderImpl<Allocator>::operator<<(int) [with Allocator = mongo::TrivialAllocator, mongo::StringBuilderImpl<Allocator> = mongo::StringBuilderImpl<mongo::TrivialAllocator>]’
/home/lurscher/third_party/usr/local/include/mongo/bson/bsonelement.h:469:64: instantiated from here
/home/lurscher/third_party/usr/local/include/mongo/bson/util/builder.h:336:13: error: ‘verify’ was not declared in this scope
/home/lurscher/third_party/usr/local/include/mongo/bson/util/builder.h: In member function ‘mongo::StringBuilderImpl<Allocator>& mongo::StringBuilderImpl<Allocator>::SBNUM(T, int, const char*) [with T = unsigned int, Allocator = mongo::TrivialAllocator, mongo::StringBuilderImpl<Allocator> = mongo::StringBuilderImpl<mongo::TrivialAllocator>]’:
/home/lurscher/third_party/usr/local/include/mongo/bson/util/builder.h:275:53: instantiated from ‘mongo::StringBuilderImpl<Allocator>& mongo::StringBuilderImpl<Allocator>::operator<<(unsigned int) [with Allocator = mongo::TrivialAllocator, mongo::StringBuilderImpl<Allocator> = mongo::StringBuilderImpl<mongo::TrivialAllocator>]’
/home/lurscher/third_party/usr/local/include/mongo/db/../bson/bson-inl.h:493:66: instantiated from here
/home/lurscher/third_party/usr/local/include/mongo/bson/util/builder.h:336:13: error: ‘verify’ was not declared in this scope
/home/lurscher/third_party/usr/local/include/mongo/bson/util/builder.h: In member function ‘mongo::StringBuilderImpl<Allocator>& mongo::StringBuilderImpl<Allocator>::SBNUM(T, int, const char*) [with T = long long int, Allocator = mongo::TrivialAllocator, mongo::StringBuilderImpl<Allocator> = mongo::StringBuilderImpl<mongo::TrivialAllocator>]’:
/home/lurscher/third_party/usr/local/include/mongo/bson/util/builder.h:284:55: instantiated from ‘mongo::StringBuilderImpl<Allocator>& mongo::StringBuilderImpl<Allocator>::operator<<(long long int) [with Allocator = mongo::TrivialAllocator, mongo::StringBuilderImpl<Allocator> = mongo::StringBuilderImpl<mongo::TrivialAllocator>]’
/home/lurscher/third_party/usr/local/include/mongo/db/../bson/bson-inl.h:693:50: instantiated from here
/home/lurscher/third_party/usr/local/include/mongo/bson/util/builder.h:336:13: error: ‘verify’ was not declared in this scope
/home/lurscher/third_party/usr/local/include/mongo/bson/util/builder.h: In member function ‘mongo::StringBuilderImpl<Allocator>& mongo::StringBuilderImpl<Allocator>::SBNUM(T, int, const char*) [with T = long long unsigned int, Allocator = mongo::TrivialAllocator, mongo::StringBuilderImpl<Allocator> = mongo::StringBuilderImpl<mongo::TrivialAllocator>]’:
/home/lurscher/third_party/usr/local/include/mongo/bson/util/builder.h:287:55: instantiated from ‘mongo::StringBuilderImpl<Allocator>& mongo::StringBuilderImpl<Allocator>::operator<<(long long unsigned int) [with Allocator = mongo::TrivialAllocator, mongo::StringBuilderImpl<Allocator> = mongo::StringBuilderImpl<mongo::TrivialAllocator>]’
/home/lurscher/third_party/usr/local/include/mongo/db/../bson/bson-inl.h:776:48: instantiated from here
/home/lurscher/third_party/usr/local/include/mongo/bson/util/builder.h:336:13: error: ‘verify’ was not declared in this scope
Try this...
#include <cstdlib>
#include <iostream>
#include "mongo/client/dbclient.h"
using namespace mongo;
void run() {
mongo::DBClientConnection c;
c.connect("localhost");
auto_ptr<DBClientCursor> cursor = c.query("test.test", BSONObj());
while (cursor->more())
std::cout << cursor->next().toString() << std::endl;
}
int main() {
try {
run();
std::cout << "connected ok" << std::endl;
} catch( const DBException &e ) {
std::cout << "caught " << e.what() << std::endl;
}
return EXIT_SUCCESS;
}
They can be compiled using...
g++ test.cpp -pthread -lmongoclient -lboost_thread-mt -lboost_filesystem -lboost_program_options -lboost_system -o test
The reason for your code's not working is the order of your includes. You just have to put dbclient.h in front of the the mongo includes. Actually, you only need dbclient.h, as it includes all other necessary headers.
What you additionally need to get this working with a shared_ptr, is a cast, for DBClientConnection::query()returns a std::auto_ptr.
The code below should work fine:
#include "mongo/client/dbclient.h"
using namespace mongo;
void run() {
DBClientConnection c;
c.connect("localhost");
boost::shared_ptr<DBClientCursor> cursor =
(boost::shared_ptr<DBClientCursor>) c.query("test", BSONObj());
while (cursor->more())
std::cout << cursor->next().toString() << std::endl;
}
int main() {
try {
run();
std::cout << "connected ok" << std::endl;
} catch( const DBException &e ) {
std::cout << "caught " << e.what() << std::endl;
}
return EXIT_SUCCESS;
}

Errors building STLPort

I'm trying to use STLPort in my project, and when I follow the directions in INSTALL.unixes I get compile errors.
I ran ./configure, then make, the output is below. I'm using make 3.81 and gcc 4.6.1 on Ubuntu.
Edit: I tried adding --with-extra-cxxflags="-std=c++ox" and I get a different and smaller set of errors, listed below.
In file included from ../stlport/memory:45:0,
from reachable.cc:16:
../stlport/stl/_shared_ptr.h:377:43: error: function definition does not declare parameters
../stlport/stl/_shared_ptr.h:421:39: error: declaration of ‘operator=’ as non-function
../stlport/stl/_shared_ptr.h:421:26: error: expected ‘;’ at end of member declaration
../stlport/stl/_shared_ptr.h:421:39: error: function definition does not declare parameters
../stlport/stl/_shared_ptr.h:463:17: error: ‘nullptr_t’ has not been declared
../stlport/stl/_shared_ptr.h:536:43: error: function definition does not declare parameters
../stlport/stl/_shared_ptr.h:552:39: error: declaration of ‘operator=’ as non-function
../stlport/stl/_shared_ptr.h:552:26: error: expected ‘;’ at end of member declaration
../stlport/stl/_shared_ptr.h:552:39: error: function definition does not declare parameters
../stlport/stl/_shared_ptr.h:591:17: error: ‘nullptr_t’ has not been declared
In file included from ../stlport/memory:45:0,
from reachable.cc:16:
../stlport/stl/_shared_ptr.h:643:45: error: ‘nullptr_t’ has not been declared
../stlport/stl/_shared_ptr.h:647:18: error: declaration of ‘operator==’ as non-function
../stlport/stl/_shared_ptr.h:647:18: error: ‘nullptr_t’ was not declared in this scope
../stlport/stl/_shared_ptr.h:647:18: note: suggested alternative:
/usr/include/c++/4.6/i686-linux-gnu/./bits/c++config.h:159:29: note: ‘std::nullptr_t’
../stlport/stl/_shared_ptr.h:647:29: error: expected primary-expression before ‘const’
../stlport/stl/_shared_ptr.h:647:50: error: expected primary-expression before ‘>’ token
../stlport/stl/_shared_ptr.h:647:53: error: ‘x’ was not declared in this scope
../stlport/stl/_shared_ptr.h:651:45: error: ‘nullptr_t’ has not been declared
../stlport/stl/_shared_ptr.h:655:18: error: declaration of ‘operator!=’ as non-function
../stlport/stl/_shared_ptr.h:655:18: error: ‘nullptr_t’ was not declared in this scope
../stlport/stl/_shared_ptr.h:655:18: note: suggested alternative:
/usr/include/c++/4.6/i686-linux-gnu/./bits/c++config.h:159:29: note: ‘std::nullptr_t’
../stlport/stl/_shared_ptr.h:655:29: error: expected primary-expression before ‘const’
../stlport/stl/_shared_ptr.h:655:50: error: expected primary-expression before ‘>’ token
../stlport/stl/_shared_ptr.h:655:53: error: ‘x’ was not declared in this scope
../stlport/stl/_shared_ptr.h:660:44: error: ‘nullptr_t’ has not been declared
../stlport/stl/_shared_ptr.h:665:17: error: declaration of ‘operator<’ as non-function
../stlport/stl/_shared_ptr.h:665:17: error: ‘nullptr_t’ was not declared in this scope
../stlport/stl/_shared_ptr.h:665:17: note: suggested alternative:
/usr/include/c++/4.6/i686-linux-gnu/./bits/c++config.h:159:29: note: ‘std::nullptr_t’
../stlport/stl/_shared_ptr.h:665:28: error: expected primary-expression before ‘const’
../stlport/stl/_shared_ptr.h:665:49: error: expected primary-expression before ‘>’ token
../stlport/stl/_shared_ptr.h:665:52: error: ‘x’ was not declared in this scope
../stlport/stl/_shared_ptr.h:669:44: error: ‘nullptr_t’ has not been declared
../stlport/stl/_shared_ptr.h:673:17: error: declaration of ‘operator>’ as non-function
../stlport/stl/_shared_ptr.h:673:17: error: ‘nullptr_t’ was not declared in this scope
../stlport/stl/_shared_ptr.h:673:17: note: suggested alternative:
/usr/include/c++/4.6/i686-linux-gnu/./bits/c++config.h:159:29: note: ‘std::nullptr_t’
../stlport/stl/_shared_ptr.h:673:28: error: expected primary-expression before ‘const’
../stlport/stl/_shared_ptr.h:673:49: error: expected primary-expression before ‘>’ token
../stlport/stl/_shared_ptr.h:673:52: error: ‘x’ was not declared in this scope
../stlport/stl/_shared_ptr.h:677:45: error: ‘nullptr_t’ has not been declared
../stlport/stl/_shared_ptr.h:681:18: error: declaration of ‘operator<=’ as non-function
../stlport/stl/_shared_ptr.h:681:18: error: ‘nullptr_t’ was not declared in this scope
../stlport/stl/_shared_ptr.h:681:18: note: suggested alternative:
/usr/include/c++/4.6/i686-linux-gnu/./bits/c++config.h:159:29: note: ‘std::nullptr_t’
../stlport/stl/_shared_ptr.h:681:29: error: expected primary-expression before ‘const’
../stlport/stl/_shared_ptr.h:681:50: error: expected primary-expression before ‘>’ token
../stlport/stl/_shared_ptr.h:681:53: error: ‘x’ was not declared in this scope
../stlport/stl/_shared_ptr.h:685:45: error: ‘nullptr_t’ has not been declared
../stlport/stl/_shared_ptr.h:689:18: error: declaration of ‘operator>=’ as non-function
../stlport/stl/_shared_ptr.h:689:18: error: ‘nullptr_t’ was not declared in this scope
../stlport/stl/_shared_ptr.h:689:18: note: suggested alternative:
/usr/include/c++/4.6/i686-linux-gnu/./bits/c++config.h:159:29: note: ‘std::nullptr_t’
../stlport/stl/_shared_ptr.h:689:29: error: expected primary-expression before ‘const’
../stlport/stl/_shared_ptr.h:689:50: error: expected primary-expression before ‘>’ token
../stlport/stl/_shared_ptr.h:689:53: error: ‘x’ was not declared in this scope
../stlport/stl/_shared_ptr.h:775:26: error: expected ‘)’ before ‘,’ token
../stlport/stl/_shared_ptr.h:790:26: error: expected ‘)’ before ‘,’ token
../stlport/stl/_shared_ptr.h:917:43: error: function definition does not declare parameters
../stlport/stl/_shared_ptr.h:1160:26: error: expected ‘)’ before ‘,’ token
../stlport/stl/_shared_ptr.h:1175:26: error: expected ‘)’ before ‘,’ token
../stlport/stl/_shared_ptr.h:1296:43: error: function definition does not declare parameters
../stlport/stl/_shared_ptr.h:1553:42: error: ‘nullptr_t’ has not been declared
../stlport/stl/_shared_ptr.h:1557:18: error: declaration of ‘operator==’ as non-function
../stlport/stl/_shared_ptr.h:1557:18: error: ‘nullptr_t’ was not declared in this scope
../stlport/stl/_shared_ptr.h:1557:18: note: suggested alternative:
/usr/include/c++/4.6/i686-linux-gnu/./bits/c++config.h:159:29: note: ‘std::nullptr_t’
../stlport/stl/_shared_ptr.h:1557:29: error: expected primary-expression before ‘const’
../stlport/stl/_shared_ptr.h:1561:42: error: ‘nullptr_t’ has not been declared
../stlport/stl/_shared_ptr.h:1565:18: error: declaration of ‘operator!=’ as non-function
../stlport/stl/_shared_ptr.h:1565:18: error: ‘nullptr_t’ was not declared in this scope
../stlport/stl/_shared_ptr.h:1565:18: note: suggested alternative:
/usr/include/c++/4.6/i686-linux-gnu/./bits/c++config.h:159:29: note: ‘std::nullptr_t’
../stlport/stl/_shared_ptr.h:1565:29: error: expected primary-expression before ‘const’
../stlport/stl/_shared_ptr.h:1569:41: error: ‘nullptr_t’ has not been declared
../stlport/stl/_shared_ptr.h:1573:17: error: declaration of ‘operator<’ as non-function
../stlport/stl/_shared_ptr.h:1573:17: error: ‘nullptr_t’ was not declared in this scope
../stlport/stl/_shared_ptr.h:1573:17: note: suggested alternative:
/usr/include/c++/4.6/i686-linux-gnu/./bits/c++config.h:159:29: note: ‘std::nullptr_t’
../stlport/stl/_shared_ptr.h:1573:28: error: expected primary-expression before ‘const’
../stlport/stl/_shared_ptr.h:1577:42: error: ‘nullptr_t’ has not been declared
../stlport/stl/_shared_ptr.h:1581:18: error: declaration of ‘operator<=’ as non-function
../stlport/stl/_shared_ptr.h:1581:18: error: ‘nullptr_t’ was not declared in this scope
../stlport/stl/_shared_ptr.h:1581:18: note: suggested alternative:
/usr/include/c++/4.6/i686-linux-gnu/./bits/c++config.h:159:29: note: ‘std::nullptr_t’
../stlport/stl/_shared_ptr.h:1581:29: error: expected primary-expression before ‘const’
../stlport/stl/_shared_ptr.h:1585:41: error: ‘nullptr_t’ has not been declared
../stlport/stl/_shared_ptr.h:1589:17: error: declaration of ‘operator>’ as non-function
../stlport/stl/_shared_ptr.h:1589:17: error: ‘nullptr_t’ was not declared in this scope
../stlport/stl/_shared_ptr.h:1589:17: note: suggested alternative:
/usr/include/c++/4.6/i686-linux-gnu/./bits/c++config.h:159:29: note: ‘std::nullptr_t’
../stlport/stl/_shared_ptr.h:1589:28: error: expected primary-expression before ‘const’
../stlport/stl/_shared_ptr.h:1593:42: error: ‘nullptr_t’ has not been declared
../stlport/stl/_shared_ptr.h:1597:18: error: declaration of ‘operator>=’ as non-function
../stlport/stl/_shared_ptr.h:1597:18: error: ‘nullptr_t’ was not declared in this scope
../stlport/stl/_shared_ptr.h:1597:18: note: suggested alternative:
/usr/include/c++/4.6/i686-linux-gnu/./bits/c++config.h:159:29: note: ‘std::nullptr_t’
../stlport/stl/_shared_ptr.h:1597:29: error: expected primary-expression before ‘const’
In file included from ../stlport/stl/_hashtable.h:541:0,
from ../stlport/stl/_unordered_map.h:24,
from ../stlport/unordered_map:28,
from reachable.cc:17:
../stlport/stl/_hashtable.c: In member function ‘stlp_std::pair<stlp_std::priv::_Ht_iterator<typename stlp_std::forward_list<_Val, _All>::iterator, typename _Traits::_NonConstTraits>, bool> stlp_std::hashtable<_Val, _Key, _HF, _Traits, _ExK, _EqK, _All>::insert_unique_noresize(const value_type&) [with _Val = stlp_std::pair<void* const, long unsigned int>, _Key = void*, _HF = stlp_std::hash<void*>, _Traits = stlp_std::priv::_UnorderedMapTraitsT<stlp_std::pair<void* const, long unsigned int> >, _ExK = stlp_std::priv::_Select1st<stlp_std::pair<void* const, long unsigned int> >, _EqK = stlp_std::equal_to<void*>, _All = stlp_std::allocator<stlp_std::pair<void* const, long unsigned int> >, typename _Traits::_NonConstTraits = stlp_std::priv::_NonLocalUnorderedMapTraitsT<stlp_std::pair<void* const, long unsigned int> >, typename stlp_std::forward_list<_Val, _All>::iterator = stlp_std::priv::_Slist_iterator<stlp_std::pair<void* const, long unsigned int>, stlp_std::_Nonconst_traits<stlp_std::pair<void* const, long unsigned int> > >, stlp_std::hashtable<_Val, _Key, _HF, _Traits, _ExK, _EqK, _All>::value_type = stlp_std::pair<void* const, long unsigned int>]’:
../stlport/stl/_hashtable.c:251:41: instantiated from ‘stlp_std::hashtable<_Val, _Key, _HF, _Traits, _ExK, _EqK, _All>::reference stlp_std::hashtable<_Val, _Key, _HF, _Traits, _ExK, _EqK, _All>::_M_insert(const value_type&) [with _Val = stlp_std::pair<void* const, long unsigned int>, _Key = void*, _HF = stlp_std::hash<void*>, _Traits = stlp_std::priv::_UnorderedMapTraitsT<stlp_std::pair<void* const, long unsigned int> >, _ExK = stlp_std::priv::_Select1st<stlp_std::pair<void* const, long unsigned int> >, _EqK = stlp_std::equal_to<void*>, _All = stlp_std::allocator<stlp_std::pair<void* const, long unsigned int> >, stlp_std::hashtable<_Val, _Key, _HF, _Traits, _ExK, _EqK, _All>::reference = stlp_std::pair<void* const, long unsigned int>&, stlp_std::hashtable<_Val, _Key, _HF, _Traits, _ExK, _EqK, _All>::value_type = stlp_std::pair<void* const, long unsigned int>]’
../stlport/stl/_unordered_map.h:130:22: instantiated from ‘_Tp& stlp_std::unordered_map<_Key, _Tp, _HashFcn, _EqualKey, _Alloc>::operator[](const _KT&) [with _KT = void*, _Key = void*, _Tp = long unsigned int, _HashFcn = stlp_std::hash<void*>, _EqualKey = stlp_std::equal_to<void*>, _Alloc = stlp_std::allocator<stlp_std::pair<void* const, long unsigned int> >]’
reachable.cc:45:27: instantiated from here
../stlport/stl/_hashtable.c:206:59: error: use of deleted function ‘stlp_std::pair<_T1, _T2>::pair(stlp_std::pair<_T1, _T2>&&) [with _T1 = stlp_std::priv::_Ht_iterator<stlp_std::priv::_Slist_iterator<stlp_std::pair<void* const, long unsigned int>, stlp_std::_Nonconst_traits<stlp_std::pair<void* const, long unsigned int> > >, stlp_std::priv::_NonLocalUnorderedMapTraitsT<stlp_std::pair<void* const, long unsigned int> > >, _T2 = bool, stlp_std::pair<_T1, _T2> = stlp_std::pair<stlp_std::priv::_Ht_iterator<stlp_std::priv::_Slist_iterator<stlp_std::pair<void* const, long unsigned int>, stlp_std::_Nonconst_traits<stlp_std::pair<void* const, long unsigned int> > >, stlp_std::priv::_NonLocalUnorderedMapTraitsT<stlp_std::pair<void* const, long unsigned int> > >, bool>]’
In file included from ../stlport/stl/_alloc.h:53:0,
from ../stlport/memory:30,
from reachable.cc:16:
../stlport/utility:140:3: error: ‘stlp_std::pair<_T1, _T2>::pair(stlp_std::pair<_T1, _T2>&&) [with _T1 = stlp_std::priv::_Ht_iterator<stlp_std::priv::_Slist_iterator<stlp_std::pair<void* const, long unsigned int>, stlp_std::_Nonconst_traits<stlp_std::pair<void* const, long unsigned int> > >, stlp_std::priv::_NonLocalUnorderedMapTraitsT<stlp_std::pair<void* const, long unsigned int> > >, _T2 = bool, stlp_std::pair<_T1, _T2> = stlp_std::pair<stlp_std::priv::_Ht_iterator<stlp_std::priv::_Slist_iterator<stlp_std::pair<void* const, long unsigned int>, stlp_std::_Nonconst_traits<stlp_std::pair<void* const, long unsigned int> > >, stlp_std::priv::_NonLocalUnorderedMapTraitsT<stlp_std::pair<void* const, long unsigned int> > >, bool>]’ is implicitly deleted because the default definition would be ill-formed:
../stlport/utility:140:3: error: non-static data member ‘stlp_std::pair<stlp_std::priv::_Ht_iterator<stlp_std::priv::_Slist_iterator<stlp_std::pair<void* const, long unsigned int>, stlp_std::_Nonconst_traits<stlp_std::pair<void* const, long unsigned int> > >, stlp_std::priv::_NonLocalUnorderedMapTraitsT<stlp_std::pair<void* const, long unsigned int> > >, bool>::first’ does not have a move constructor or trivial copy constructor
In file included from ../stlport/stl/_hashtable.h:541:0,
from ../stlport/stl/_unordered_map.h:24,
from ../stlport/unordered_map:28,
from reachable.cc:17:
../stlport/stl/_hashtable.c:251:41: instantiated from ‘stlp_std::hashtable<_Val, _Key, _HF, _Traits, _ExK, _EqK, _All>::reference stlp_std::hashtable<_Val, _Key, _HF, _Traits, _ExK, _EqK, _All>::_M_insert(const value_type&) [with _Val = stlp_std::pair<void* const, long unsigned int>, _Key = void*, _HF = stlp_std::hash<void*>, _Traits = stlp_std::priv::_UnorderedMapTraitsT<stlp_std::pair<void* const, long unsigned int> >, _ExK = stlp_std::priv::_Select1st<stlp_std::pair<void* const, long unsigned int> >, _EqK = stlp_std::equal_to<void*>, _All = stlp_std::allocator<stlp_std::pair<void* const, long unsigned int> >, stlp_std::hashtable<_Val, _Key, _HF, _Traits, _ExK, _EqK, _All>::reference = stlp_std::pair<void* const, long unsigned int>&, stlp_std::hashtable<_Val, _Key, _HF, _Traits, _ExK, _EqK, _All>::value_type = stlp_std::pair<void* const, long unsigned int>]’
../stlport/stl/_unordered_map.h:130:22: instantiated from ‘_Tp& stlp_std::unordered_map<_Key, _Tp, _HashFcn, _EqualKey, _Alloc>::operator[](const _KT&) [with _KT = void*, _Key = void*, _Tp = long unsigned int, _HashFcn = stlp_std::hash<void*>, _EqualKey = stlp_std::equal_to<void*>, _Alloc = stlp_std::allocator<stlp_std::pair<void* const, long unsigned int> >]’
reachable.cc:45:27: instantiated from here
../stlport/stl/_hashtable.c:216:54: error: use of deleted function ‘stlp_std::pair<_T1, _T2>::pair(stlp_std::pair<_T1, _T2>&&) [with _T1 = stlp_std::priv::_Ht_iterator<stlp_std::priv::_Slist_iterator<stlp_std::pair<void* const, long unsigned int>, stlp_std::_Nonconst_traits<stlp_std::pair<void* const, long unsigned int> > >, stlp_std::priv::_NonLocalUnorderedMapTraitsT<stlp_std::pair<void* const, long unsigned int> > >, _T2 = bool, stlp_std::pair<_T1, _T2> = stlp_std::pair<stlp_std::priv::_Ht_iterator<stlp_std::priv::_Slist_iterator<stlp_std::pair<void* const, long unsigned int>, stlp_std::_Nonconst_traits<stlp_std::pair<void* const, long unsigned int> > >, stlp_std::priv::_NonLocalUnorderedMapTraitsT<stlp_std::pair<void* const, long unsigned int> > >, bool>]’
../stlport/stl/_hashtable.c:251:41: instantiated from ‘stlp_std::hashtable<_Val, _Key, _HF, _Traits, _ExK, _EqK, _All>::reference stlp_std::hashtable<_Val, _Key, _HF, _Traits, _ExK, _EqK, _All>::_M_insert(const value_type&) [with _Val = stlp_std::pair<void* const, long unsigned int>, _Key = void*, _HF = stlp_std::hash<void*>, _Traits = stlp_std::priv::_UnorderedMapTraitsT<stlp_std::pair<void* const, long unsigned int> >, _ExK = stlp_std::priv::_Select1st<stlp_std::pair<void* const, long unsigned int> >, _EqK = stlp_std::equal_to<void*>, _All = stlp_std::allocator<stlp_std::pair<void* const, long unsigned int> >, stlp_std::hashtable<_Val, _Key, _HF, _Traits, _ExK, _EqK, _All>::reference = stlp_std::pair<void* const, long unsigned int>&, stlp_std::hashtable<_Val, _Key, _HF, _Traits, _ExK, _EqK, _All>::value_type = stlp_std::pair<void* const, long unsigned int>]’
../stlport/stl/_unordered_map.h:130:22: instantiated from ‘_Tp& stlp_std::unordered_map<_Key, _Tp, _HashFcn, _EqualKey, _Alloc>::operator[](const _KT&) [with _KT = void*, _Key = void*, _Tp = long unsigned int, _HashFcn = stlp_std::hash<void*>, _EqualKey = stlp_std::equal_to<void*>, _Alloc = stlp_std::allocator<stlp_std::pair<void* const, long unsigned int> >]’
reachable.cc:45:27: instantiated from here
../stlport/stl/_hashtable.c:219:67: error: use of deleted function ‘stlp_std::pair<_T1, _T2>::pair(stlp_std::pair<_T1, _T2>&&) [with _T1 = stlp_std::priv::_Ht_iterator<stlp_std::priv::_Slist_iterator<stlp_std::pair<void* const, long unsigned int>, stlp_std::_Nonconst_traits<stlp_std::pair<void* const, long unsigned int> > >, stlp_std::priv::_NonLocalUnorderedMapTraitsT<stlp_std::pair<void* const, long unsigned int> > >, _T2 = bool, stlp_std::pair<_T1, _T2> = stlp_std::pair<stlp_std::priv::_Ht_iterator<stlp_std::priv::_Slist_iterator<stlp_std::pair<void* const, long unsigned int>, stlp_std::_Nonconst_traits<stlp_std::pair<void* const, long unsigned int> > >, stlp_std::priv::_NonLocalUnorderedMapTraitsT<stlp_std::pair<void* const, long unsigned int> > >, bool>]’
make[1]: *** [obj/gcc/so/reachable.o] Error 1
make: *** [release-shared] Error 2
It turns out the source I got my copy of STLPort from, git://stlport.git.sourceforge.net/gitroot/stlport/stlport, is much more bleeding edge than I thought. If I grab the stable build from SourceForge it compiles fine.

C++: Thread Building Blocks - include hell

I can't get my C++ program to compile. As you can see, I'm writing a Node.js addon. Here is the code (Eamorr_addon.cpp):
#include <iostream>
#include <v8.h>
#include <node.h>
#include <gmp.h>
#include "Definitions.h"
#include "Rk.h"
#include "tbb/concurrent_hash_map.h"
//#include <tbb/concurrent_vector.h>
using namespace std;
using namespace v8;
static Handle<Value> Echo(const Arguments& args) {
HandleScope scope;
if (args.Length() < 1) {
return ThrowException(Exception::TypeError(String::New("Bad argument")));
}
return scope.Close(args[0]);
}
extern "C" void init (Handle<Object> target)
{
HandleScope scope;
target->Set(String::New("hello"), String::New("world"));
NODE_SET_METHOD(target, "echo", Echo);
}
Everything works just fine when I remove the line #include "tbb/concurrent_hash_map.h".
Here is my gyp make file:
{
'targets': [
{
'target_name':'Eamorr_addon',
'sources':['src/Eamorr_addon.cpp'],
'include_dirs': ['/usr/include','/usr/local/include/'],
'cflags': ['-Wall','-fopenmp'],
'ldflags': ['-ltbb','-lgmp']
}
]
}
When I do node-gyp build, I get the following stream of errors which I can't get to the bottom of:
node-gyp build
info it worked if it ends with ok
spawn make [ 'BUILDTYPE=Release', '-f', 'Makefile.gyp' ]
CXX(target) out/Release/obj.target/DeDuplicator_addon/src/DeDuplicator_addon.o
In file included from /usr/include/tbb/concurrent_hash_map.h:51:0,
from src/DeDuplicator_addon.cpp:17:
/usr/include/tbb/atomic.h:218:31: error: expected nested-name-specifier before numeric constant
/usr/include/tbb/atomic.h:218:31: error: expected ‘>’ before numeric constant
/usr/include/tbb/atomic.h:224:33: error: expected ‘)’ before ‘addend’
/usr/include/tbb/atomic.h:224:40: error: ISO C++ forbids initialization of member ‘fetch_and_add’
/usr/include/tbb/atomic.h:224:40: error: making ‘fetch_and_add’ static
/usr/include/tbb/atomic.h:224:40: error: template declaration of ‘value_type tbb::internal::fetch_and_add’
In file included from /usr/include/tbb/concurrent_hash_map.h:51:0,
from src/DeDuplicator_addon.cpp:17:
/usr/include/tbb/atomic.h:228:31: error: expected identifier before numeric constant
/usr/include/tbb/atomic.h:228:31: error: expected ‘,’ or ‘...’ before numeric constant
/usr/include/tbb/atomic.h:251:28: error: expected identifier before numeric constant
/usr/include/tbb/atomic.h:251:28: error: expected ‘,’ or ‘...’ before numeric constant
/usr/include/tbb/atomic.h:255:28: error: expected identifier before numeric constant
/usr/include/tbb/atomic.h:255:28: error: expected ‘,’ or ‘...’ before numeric constant
/usr/include/tbb/atomic.h: In member function ‘value_type tbb::internal::atomic_impl_with_arithmetic<I, <anonymous> >::fetch_and_add(int)’:
/usr/include/tbb/atomic.h:229:48: error: ‘addend’ was not declared in this scope
/usr/include/tbb/atomic.h: In member function ‘value_type tbb::internal::atomic_impl_with_arithmetic<I, <anonymous> >::fetch_and_decrement()’:
/usr/include/tbb/atomic.h:243:33: error: ‘2’ cannot be used as a function
/usr/include/tbb/atomic.h:243:33: error: ‘2’ cannot be used as a function
/usr/include/tbb/atomic.h:243:33: error: ‘2’ cannot be used as a function
/usr/include/tbb/atomic.h: In member function ‘value_type tbb::internal::atomic_impl_with_arithmetic<I, <anonymous> >::fetch_and_decrement()’:
/usr/include/tbb/atomic.h:247:30: error: ‘2’ cannot be used as a function
/usr/include/tbb/atomic.h:247:30: error: ‘2’ cannot be used as a function
/usr/include/tbb/atomic.h:247:30: error: ‘2’ cannot be used as a function
/usr/include/tbb/atomic.h: In member function ‘value_type tbb::internal::atomic_impl_with_arithmetic<I, <anonymous> >::operator+=(int)’:
/usr/include/tbb/atomic.h:252:30: error: ‘addend’ was not declared in this scope
/usr/include/tbb/atomic.h: In member function ‘value_type tbb::internal::atomic_impl_with_arithmetic<I, <anonymous> >::operator-=(int)’:
/usr/include/tbb/atomic.h:258:30: error: ‘2’ cannot be used as a function
/usr/include/tbb/atomic.h:258:32: error: ‘addend’ was not declared in this scope
/usr/include/tbb/atomic.h: In member function ‘value_type tbb::internal::atomic_impl_with_arithmetic<I, <anonymous> >::operator--()’:
/usr/include/tbb/atomic.h:266:30: error: ‘2’ cannot be used as a function
/usr/include/tbb/atomic.h:266:30: error: ‘2’ cannot be used as a function
/usr/include/tbb/atomic.h:266:30: error: ‘2’ cannot be used as a function
/usr/include/tbb/atomic.h: In member function ‘value_type tbb::internal::atomic_impl_with_arithmetic<I, <anonymous> >::operator--(int)’:
/usr/include/tbb/atomic.h:274:30: error: ‘2’ cannot be used as a function
/usr/include/tbb/atomic.h:274:30: error: ‘2’ cannot be used as a function
/usr/include/tbb/atomic.h:274:30: error: ‘2’ cannot be used as a function
/usr/include/tbb/atomic.h: At global scope:
/usr/include/tbb/atomic.h:329:1: error: wrong number of template arguments (3, should be 2)
/usr/include/tbb/atomic.h:219:8: error: provided for ‘template<class I, int <anonymous> > struct tbb::internal::atomic_impl_with_arithmetic’
/usr/include/tbb/atomic.h: In member function ‘long long int tbb::atomic<long long int>::operator=(long long int)’:
/usr/include/tbb/atomic.h:329:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: In member function ‘tbb::atomic<long long int>& tbb::atomic<long long int>::operator=(const tbb::atomic<long long int>&)’:
/usr/include/tbb/atomic.h:329:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: At global scope:
/usr/include/tbb/atomic.h:330:1: error: wrong number of template arguments (3, should be 2)
/usr/include/tbb/atomic.h:219:8: error: provided for ‘template<class I, int <anonymous> > struct tbb::internal::atomic_impl_with_arithmetic’
/usr/include/tbb/atomic.h: In member function ‘long long unsigned int tbb::atomic<long long unsigned int>::operator=(long long unsigned int)’:
/usr/include/tbb/atomic.h:330:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: In member function ‘tbb::atomic<long long unsigned int>& tbb::atomic<long long unsigned int>::operator=(const tbb::atomic<long long unsigned int>&)’:
/usr/include/tbb/atomic.h:330:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: At global scope:
/usr/include/tbb/atomic.h:335:1: error: wrong number of template arguments (3, should be 2)
/usr/include/tbb/atomic.h:219:8: error: provided for ‘template<class I, int <anonymous> > struct tbb::internal::atomic_impl_with_arithmetic’
/usr/include/tbb/atomic.h: In member function ‘long int tbb::atomic<long int>::operator=(long int)’:
/usr/include/tbb/atomic.h:335:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: In member function ‘tbb::atomic<long int>& tbb::atomic<long int>::operator=(const tbb::atomic<long int>&)’:
/usr/include/tbb/atomic.h:335:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: At global scope:
/usr/include/tbb/atomic.h:336:1: error: wrong number of template arguments (3, should be 2)
/usr/include/tbb/atomic.h:219:8: error: provided for ‘template<class I, int <anonymous> > struct tbb::internal::atomic_impl_with_arithmetic’
/usr/include/tbb/atomic.h: In member function ‘long unsigned int tbb::atomic<long unsigned int>::operator=(long unsigned int)’:
/usr/include/tbb/atomic.h:336:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: In member function ‘tbb::atomic<long unsigned int>& tbb::atomic<long unsigned int>::operator=(const tbb::atomic<long unsigned int>&)’:
/usr/include/tbb/atomic.h:336:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: At global scope:
/usr/include/tbb/atomic.h:352:1: error: wrong number of template arguments (3, should be 2)
/usr/include/tbb/atomic.h:219:8: error: provided for ‘template<class I, int <anonymous> > struct tbb::internal::atomic_impl_with_arithmetic’
/usr/include/tbb/atomic.h: In member function ‘unsigned int tbb::atomic<unsigned int>::operator=(unsigned int)’:
/usr/include/tbb/atomic.h:352:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: In member function ‘tbb::atomic<unsigned int>& tbb::atomic<unsigned int>::operator=(const tbb::atomic<unsigned int>&)’:
/usr/include/tbb/atomic.h:352:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: At global scope:
/usr/include/tbb/atomic.h:353:1: error: wrong number of template arguments (3, should be 2)
/usr/include/tbb/atomic.h:219:8: error: provided for ‘template<class I, int <anonymous> > struct tbb::internal::atomic_impl_with_arithmetic’
/usr/include/tbb/atomic.h: In member function ‘int tbb::atomic<int>::operator=(int)’:
/usr/include/tbb/atomic.h:353:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: In member function ‘tbb::atomic<int>& tbb::atomic<int>::operator=(const tbb::atomic<int>&)’:
/usr/include/tbb/atomic.h:353:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: At global scope:
/usr/include/tbb/atomic.h:356:1: error: wrong number of template arguments (3, should be 2)
/usr/include/tbb/atomic.h:219:8: error: provided for ‘template<class I, int <anonymous> > struct tbb::internal::atomic_impl_with_arithmetic’
/usr/include/tbb/atomic.h: In member function ‘short unsigned int tbb::atomic<short unsigned int>::operator=(short unsigned int)’:
/usr/include/tbb/atomic.h:356:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: In member function ‘tbb::atomic<short unsigned int>& tbb::atomic<short unsigned int>::operator=(const tbb::atomic<short unsigned int>&)’:
/usr/include/tbb/atomic.h:356:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: At global scope:
/usr/include/tbb/atomic.h:357:1: error: wrong number of template arguments (3, should be 2)
/usr/include/tbb/atomic.h:219:8: error: provided for ‘template<class I, int <anonymous> > struct tbb::internal::atomic_impl_with_arithmetic’
/usr/include/tbb/atomic.h: In member function ‘short int tbb::atomic<short int>::operator=(short int)’:
/usr/include/tbb/atomic.h:357:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: In member function ‘tbb::atomic<short int>& tbb::atomic<short int>::operator=(const tbb::atomic<short int>&)’:
/usr/include/tbb/atomic.h:357:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: At global scope:
/usr/include/tbb/atomic.h:358:1: error: wrong number of template arguments (3, should be 2)
/usr/include/tbb/atomic.h:219:8: error: provided for ‘template<class I, int <anonymous> > struct tbb::internal::atomic_impl_with_arithmetic’
/usr/include/tbb/atomic.h: In member function ‘char tbb::atomic<char>::operator=(char)’:
/usr/include/tbb/atomic.h:358:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: In member function ‘tbb::atomic<char>& tbb::atomic<char>::operator=(const tbb::atomic<char>&)’:
/usr/include/tbb/atomic.h:358:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: At global scope:
/usr/include/tbb/atomic.h:359:1: error: wrong number of template arguments (3, should be 2)
/usr/include/tbb/atomic.h:219:8: error: provided for ‘template<class I, int <anonymous> > struct tbb::internal::atomic_impl_with_arithmetic’
/usr/include/tbb/atomic.h: In member function ‘signed char tbb::atomic<signed char>::operator=(signed char)’:
/usr/include/tbb/atomic.h:359:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: In member function ‘tbb::atomic<signed char>& tbb::atomic<signed char>::operator=(const tbb::atomic<signed char>&)’:
/usr/include/tbb/atomic.h:359:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: At global scope:
/usr/include/tbb/atomic.h:360:1: error: wrong number of template arguments (3, should be 2)
/usr/include/tbb/atomic.h:219:8: error: provided for ‘template<class I, int <anonymous> > struct tbb::internal::atomic_impl_with_arithmetic’
/usr/include/tbb/atomic.h: In member function ‘unsigned char tbb::atomic<unsigned char>::operator=(unsigned char)’:
/usr/include/tbb/atomic.h:360:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: In member function ‘tbb::atomic<unsigned char>& tbb::atomic<unsigned char>::operator=(const tbb::atomic<unsigned char>&)’:
/usr/include/tbb/atomic.h:360:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: At global scope:
/usr/include/tbb/atomic.h:363:1: error: wrong number of template arguments (3, should be 2)
/usr/include/tbb/atomic.h:219:8: error: provided for ‘template<class I, int <anonymous> > struct tbb::internal::atomic_impl_with_arithmetic’
/usr/include/tbb/atomic.h: In member function ‘wchar_t tbb::atomic<wchar_t>::operator=(wchar_t)’:
/usr/include/tbb/atomic.h:363:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: In member function ‘tbb::atomic<wchar_t>& tbb::atomic<wchar_t>::operator=(const tbb::atomic<wchar_t>&)’:
/usr/include/tbb/atomic.h:363:1: error: ‘store_with_release’ was not declared in this scope
/usr/include/tbb/atomic.h: At global scope:
/usr/include/tbb/atomic.h:367:93: error: wrong number of template arguments (3, should be 2)
/usr/include/tbb/atomic.h:219:8: error: provided for ‘template<class I, int <anonymous> > struct tbb::internal::atomic_impl_with_arithmetic’
In file included from src/DeDuplicator_addon.cpp:17:0:
/usr/include/tbb/concurrent_hash_map.h: In member function ‘bool tbb::interface4::internal::hash_map_base::check_mask_race(tbb::interface4::internal::hash_map_base::hashcode_t, tbb::interface4::internal::hash_map_base::hashcode_t&) const’:
/usr/include/tbb/concurrent_hash_map.h:266:21: error: cannot convert ‘const tbb::atomic<long unsigned int>’ to ‘tbb::interface4::internal::hash_map_base::hashcode_t’ in assignment
/usr/include/tbb/concurrent_hash_map.h: In member function ‘tbb::interface4::internal::hash_map_base::segment_index_t tbb::interface4::internal::hash_map_base::insert_new_node(tbb::interface4::internal::hash_map_base::bucket*, tbb::interface4::internal::hash_map_base::node_base*, tbb::interface4::internal::hash_map_base::hashcode_t)’:
/usr/include/tbb/concurrent_hash_map.h:296:30: error: no match for ‘operator++’ in ‘++((tbb::interface4::internal::hash_map_base*)this)->tbb::interface4::internal::hash_map_base::my_size’
/usr/include/tbb/concurrent_hash_map.h: In member function ‘void tbb::interface4::internal::hash_map_base::reserve(tbb::interface4::internal::hash_map_base::size_type)’:
/usr/include/tbb/concurrent_hash_map.h:316:32: error: no match for ‘operator!’ in ‘!((tbb::interface4::internal::hash_map_base*)this)->tbb::interface4::internal::hash_map_base::my_size’
/usr/include/tbb/concurrent_hash_map.h:316:32: note: candidate is: operator!(bool) <built-in>
/usr/include/tbb/concurrent_hash_map.h:317:32: error: cannot convert ‘tbb::atomic<long unsigned int>’ to ‘tbb::interface4::internal::hash_map_base::size_type’ in initialization
/usr/include/tbb/concurrent_hash_map.h:317:58: error: cannot convert ‘tbb::atomic<long unsigned int>’ to ‘tbb::interface4::internal::hash_map_base::size_type’ in assignment
/usr/include/tbb/concurrent_hash_map.h: In member function ‘bool tbb::interface4::concurrent_hash_map<Key, T, HashCompare, A>::empty() const’:
/usr/include/tbb/concurrent_hash_map.h:833:44: error: no match for ‘operator==’ in ‘((const tbb::interface4::concurrent_hash_map<Key, T, HashCompare, A>*)this)->tbb::interface4::internal::hash_map_base::my_size == 0’
/usr/include/tbb/concurrent_hash_map.h: In member function ‘tbb::interface4::concurrent_hash_map::size_type tbb::interface4::concurrent_hash_map<Key, T, HashCompare, A>::bucket_count() const’:
/usr/include/tbb/concurrent_hash_map.h:839:53: error: no match for ‘operator+’ in ‘((const tbb::interface4::concurrent_hash_map<Key, T, HashCompare, A>*)this)->tbb::interface4::internal::hash_map_base::my_mask + 1’
/usr/include/tbb/concurrent_hash_map.h: In member function ‘bool tbb::interface4::concurrent_hash_map<Key, T, HashCompare, A>::exclude(tbb::interface4::concurrent_hash_map<Key, T, HashCompare, A>::const_accessor&, bool)’:
/usr/include/tbb/concurrent_hash_map.h:1119:16: error: no ‘operator--(int)’ declared for postfix ‘--’
/usr/include/tbb/concurrent_hash_map.h: In member function ‘bool tbb::interface4::concurrent_hash_map<Key, T, HashCompare, A>::erase(const Key&)’:
/usr/include/tbb/concurrent_hash_map.h:1160:16: error: no ‘operator--(int)’ declared for postfix ‘--’
/usr/include/tbb/concurrent_hash_map.h: In member function ‘void tbb::interface4::concurrent_hash_map<Key, T, HashCompare, A>::internal_copy(const tbb::interface4::concurrent_hash_map<Key, T, HashCompare, A>&)’:
/usr/include/tbb/concurrent_hash_map.h:1310:20: error: no match for ‘operator==’ in ‘((tbb::interface4::concurrent_hash_map<Key, T, HashCompare, A>*)this)->tbb::interface4::internal::hash_map_base::my_mask == mask’
/usr/include/tbb/concurrent_hash_map.h:1323:19: error: no match for ‘operator++’ in ‘++((tbb::interface4::concurrent_hash_map<Key, T, HashCompare, A>*)this)->tbb::interface4::internal::hash_map_base::my_size’
/usr/include/tbb/concurrent_hash_map.h: In member function ‘void tbb::interface4::concurrent_hash_map<Key, T, HashCompare, A>::internal_copy(I, I)’:
/usr/include/tbb/concurrent_hash_map.h:1340:11: error: no match for ‘operator++’ in ‘++((tbb::interface4::concurrent_hash_map<Key, T, HashCompare, A>*)this)->tbb::interface4::internal::hash_map_base::my_size’
make: *** [out/Release/obj.target/DeDuplicator_addon/src/DeDuplicator_addon.o] Error 1
ERR! Error: `make` failed with exit code: 2
at Array.0 (/usr/local/lib/node_modules/node-gyp/lib/build.js:118:25)
at EventEmitter._tickCallback (node.js:192:40)
ERR! not ok
Can anyone suggest anything?
Edit:
Here is "Rk.h":
#ifndef RK_H_
#define RK_H_
#include <gmp.h>
#include "Definitions.h"
unsigned long int init_rkHash(char* str);
unsigned long int get_rkHash(unsigned long int prevHash,int prevAscii,int topAscii);
/*unsigned long int getFirstPrevHash(char* &buffer);*/
#endif /* RK_H_ */
and here is "Definitions.h":
#ifndef DEFINITIONS_H_
#define DEFINITIONS_H_
#define PORT 10002
#define CHUNKSIZE 512
#define PRIME 9223372036854775783
#define D 2
#endif /* DEFINITIONS_H_ */
#define macros are easy to use wrong. And giving them names like D calls for problems.
You defined D as
#define D 2
Now, if we look at atomic.h, we find e.g.
...
template<typename I, typename D, typename StepType>
struct atomic_impl_with_arithmetic: atomic_impl<I> {
...
value_type fetch_and_add( D addend ) {
...
template<memory_semantics M>
value_type fetch_and_decrement() {
return fetch_and_add<M>(__TBB_MINUS_ONE(D));
}
...
See the correlation?
What you get is:
...
template<typename I, typename 2, typename StepType>
struct atomic_impl_with_arithmetic: atomic_impl<I> {
...
value_type fetch_and_add( 2 addend ) {
...
template<memory_semantics M>
value_type fetch_and_decrement() {
return fetch_and_add<M>(__TBB_MINUS_ONE(2));
}
...
This is not valid C++.
Solution: Don't give macros a name that will probably clash. Rule of thumb: Every neat name clashes at least once in a lifetime and produce subtle and unreal error messages that might infect a poor maintainers (you?) nightly dreams with visions of indescribable demons. Therefore, only use macros if you absolutely must.
If D is supposed to be an integer (but who, except you, knows by that name?), you can do one of the following:
enum { D = 2 };
or
extern const int D; // in a header
const int D = 2; // in exactly one source file
or you may rethink your decision whether D needs to be constant at all and instead pass it as a parameter to your functions and classes.
Here is an excerpt from tbb/atomic.h
template<typename I, typename D, typename StepType>
struct atomic_impl_with_arithmetic: atomic_impl<I> {
public:
typedef I value_type;
template<memory_semantics M>
value_type fetch_and_add( D addend ) {
return value_type(internal::atomic_traits<sizeof(value_type),M>::fetch_and_add( &this->rep.value, addend*sizeof(StepType) ));
}
...
Now, if you substitute definition for D from Definitions.h you'll see what the issue is. In general it's a bad idea to make macro definitions with such names. If you've got too much code dependent on D you can fix the issue by undefining it befor including tbb headers, something like this:
#include "Definitions.h"
#include "Rk.h"
#pragma push_macro("D")
#undef D
#include "tbb/concurrent_hash_map.h"
#include <tbb/concurrent_vector.h>
#pragma pop_macro("D")