C++ STL mapに対するboost::assignのstatic_cast

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
chibago

C++ STL mapに対するboost::assignのstatic_cast

#1

投稿記事 by chibago » 14年前

皆様、お世話になっております。
以下のコードがコンパイル出来ずに困っております。

コード:

#ifndef __DATA_H__
#define __DATA_H__

#include <vector>
#include <map>
#include <boost/assign/list_of.hpp>


  template <typename T>
class Data{

 public:
     Data();

 private:
     const std::map<T, std::vector<T> > data;

 };

#endif



#include "Data.h"

  template<typename T>
  Data<T>::Data():data(static_cast<const std::map<T, std::vector<T> > &>
			  (boost::assign::map_list_of<T, const std::vector<T> >
                          (-173.0,
                          static_cast<const std::vector<T> &>( 
		          boost::assign::list_of(93.5)(2.88)(4.46))))
		       	  (-123.0,
                          static_cast<const std::vector<T> &>( 
			  boost::assign::list_of(48.8)(5.95)(3.835)))
			   ){}


  /////////////////

template class Data<double>;

/code]

MAPに与えるペアの一つ目だけならコンパイルが通るのですが、
2つめまで入れると以下のようなエラーが発生します。

Data.cpp: コンストラクタ ‘Data<T>::Data() [with T = double]’ 内:
Data.cpp:20:26:   instantiated from here
Data.cpp:14:7: エラー: ‘(const std::map<double, std::vector<double, std::allocator<double> >, std::less<double>, std::allocator<std::pair<const double, std::vector<double, std::allocator<double> > > > >) (double, const std::vector<double, std::allocator<double> >&)’ への呼び出しが適合しません
make: *** [Data.o] エラー 1

環境はGCC4.6.2です。

お分かりになる方がいらっしゃりましたらご指導いただければ幸です。
よろしくお願いします。

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: C++ STL mapに対するboost::assignのstatic_cast

#2

投稿記事 by beatle » 14年前

map_list_ofなど、list_of系は
list_of(値1)(値2)...(値n)
のように使うと思うのですが、chibagoさんの使い方は
(list_of(値1))(値2)
となっているようです。

関係ないですが、2つのアンダースコアが連続する名前はC++では違反です。(__DATA_H__のことです)

chibago

Re: C++ STL mapに対するboost::assignのstatic_cast

#3

投稿記事 by chibago » 14年前

beatle さんありがとうございました。

凡ミスをご指摘いただき、すみません。
気をつけようと思います。

インクルードガードについては、
何かのサンプルか、IDEの自動生成のもの
を何となく使いまわしていたものです。
違反であることを初めて知りました。

閉鎖

“C言語何でも質問掲示板” へ戻る