既存の Makfile ベースのプロジェクトからインポートされた Eclipse プロジェクトに、次の C++ コードがあります。
#ifndef LAZY_EVAL_FUNCTOR_
#define LAZY_EVAL_FUNCTOR_
#include <vector>
#include <stdlib.h>
namespace libtensor {
//Forward declaration
template<size_t N,typename T>
class labeled_sparse_btensor;
typedef std::vector<size_t> block_list;
//Used to erase other size parameters from contract_eval_functor
template<size_t N,typename T=double>
class lazy_eval_functor {
public:
virtual void operator()(labeled_sparse_btensor<N,T>& dest) const = 0;
//For direct tensors
virtual void operator()(labeled_sparse_btensor<N,T>& dest,std::vector< block_list >& output_block_lists) const = 0;
virtual ~lazy_eval_functor() {};
};
} // namespace libtensor
#endif /* LAZY_EVAL_FUNCTOR_ */
インクルードが正しく解決されているという事実にもかかわらず、 std::vector が表示される両方の行でエラーが発生します。
Symbol 'vector' could not be resolved.
std::vector が定義されているインクルード パスを既に追加しました。
私の OS は Mac OS X 10.6 で、gcc のバージョンは gcc 4.2.1 です。
この問題を解決する方法をアドバイスしてください。
編集: std::map など、他の std メンバーに対してこれを行うようです。ヘッダーに「未解決の包含」エラーはありませんが、対応するクラスが見つかりません。