//boost
#include <boost/multi_index_container.hpp>
#include <boost/multi_index/hashed_index.hpp>
#include <boost/multi_index/member.hpp>
#include "boost/multi_index/key_extractors.hpp"
using namespace ::boost;
using namespace ::boost::multi_index;
#include <string>
struct Peer
{
std::string userid;
int age()const {return age_;}
private:
int age_;
};
struct CPeer:public Peer
{
int index;
};
struct Peer_age_extractor
{
typedef int result_type;
const int operator()(const CPeer& peer)const
{
return peer.age();
}
};
struct userid{};
struct age{};
typedef multi_index_container<
CPeer,
indexed_by<
hashed_unique<tag<userid>,member<Peer,std::string,&Peer::userid> >,
hashed_non_unique<tag<age>,const_mem_fun<Peer,int,&Peer::age> >//
// hashed_non_unique<const_mem_fun<Peer,int,&Peer::age> > //without a tag will be ok.
//hashed_non_unique<tag<age>,Peer_age_extractor > //this line with cause the same question.
>
> CPeersType;
I get this in vs7.1 with sp1:
------ Build started: Project: multi_index1, Configuration: Debug Win32 ------
Compiling...
hash_test.cpp
f:\boost_1_34_0\boost\mpl\aux_\preprocessed\plain\apply_wrap.hpp(48) : fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'f:\vs70builds\6030\vc\Compiler\CxxFE\sl\P1\C\main.c', line 1164)
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
Build log was saved at "file://g:\cpp\boost\multi_index1\Debug\BuildLog.htm"
multi_index1 - 1 error(s), 0 warning(s)
yet this can compile well in gcc 3.4.
i really don't know why.
many thanks for JOAQUIN LOPEZ MU?Z 's past help.;-)
百 万 玩 家 同 玩 的 乐 园,人 气 爆 发 的 梦 幻 西 游