【C++】template 統合スレ -- STL/Boost/Loki, etc.
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG以下のスレッドを統合するスレです。
STLスレッド
Part1 http://pc.2ch.net/tech/kako/1004/10042/1004287394.html
Part2 http://pc3.2ch.net/test/read.cgi/tech/1026793823/
【C++】Boost使い集まれ!
http://pc3.2ch.net/test/read.cgi/tech/1033830935/
Generic Programming with C++ Template
http://pc.2ch.net/tech/kako/1008/10085/1008593126.html
関連スレ、その他リンクは >>2-5 あたりに。
0449デフォルトの名無しさん
NGNG2ちゃんねらでもPGなれるんだもん・・・。
糞だね。
0450デフォルトの名無しさん
NGNG今後、予想されるレス
「IPって何ですか?」
「串って何ですか?」 「串揚げ」
0451デフォルトの名無しさん
NGNG0452デフォルトの名無しさん
NGNGサイトのためになるから賛成 54% 2315 票
利用しないから関係ない 8% 378 票
2ちゃんねるってなに? 4% 172 票
アクセスログってなに? 4% 173 票
0453デフォルトの名無しさん
NGNGならんとかって話はどーなった?
0454デフォルトの名無しさん
NGNG0455デフォルトの名無しさん
NGNG0456デフォルトの名無しさん
NGNGというわけで、掲示板の最下部のバージョン表示が20030107a以降のやつは、
ログとり実験やってますです。
今のところ、qb,live2,tmpですね
722 名前:心得をよく読みましょう 投稿日:03/01/09 15:43 ID:b1s0ydcx
qb : 2ch批判要望 削除議論 削除要請 削除整理
live2 : ニュース速報
tmp : ニュース極東 ちくり裏事情 政治思想 Download
厨房! 人権問題 バカニュース 薬・違法
ゴーマニズム ロビー 最悪 少年犯罪
違反の潰し方 ペット苦手 なんでもあり 学歴
IP記録実験PART2
http://qb.2ch.net/test/read.cgi/accuse/1042020193/
0457デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNG0460デフォルトの名無しさん
NGNG0461デフォルトの名無しさん
NGNG氏ね
0462デフォルトの名無しさん
NGNGhttp://live2.2ch.net/test/read.cgi/news/1042035002/
674 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 23:36 ID:1BXnvYvY
通報する人は、IPはあるので管理者に連絡してくれれば、
「捜査関係事項照会書で照会しますよー」って言ってたて伝えてくださいー。
902 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 23:41 ID:1BXnvYvY
>警視庁の情報提供っていうフォームで通報していいですか?
フォームでもよいかと。
通報者の電話番号とかもきちんとかいといたほうが
取り上げられる可能性高いです。
ホントは110のほうがいいんですが、、
0463デフォルトの名無しさん
NGNGIP記録実験2
http://news2.2ch.net/test/read.cgi/newsplus/1042030554/
0464E
NGNGある object が 型T のインスタンスだったときに true を返す
Javascript の instanceof みたいなモノを作ってみたんだけど、
イマイチ使用する場面を思い浮かばない。
なんかイイ使い方があったら教えて下さい
0465デフォルトの名無しさん
NGNG蛇足ですがinstanceof演算子はJScriptですよん。
0466デフォルトの名無しさん
NGNGそれって
#define instanceof(T, obj) (typeid(obj) == typeid(T))
とか
template<class T> struct instanceof {
static bool f( T ) { return true; }
template<class U> static bool f( U ) { return false; }
};
とかで十分な気がするんだけど、どんなもんを作ったん?
いまいちよくわからん。
>>465
JavaScript 1.3 以上にはあるよ。ECMAの標準にも入ってるし。
0467464
NGNGあ、そういえば、それでイイじゃん。つーか、そっちの方がいいかも。
俺が作ったのは、こんなモノ
class __object
{
template< typename Type > struct holder
{
static holder* unique()
{
static holder obj;
return obj;
}
};
public:
template< typename InstanceType > __object( InstanceType& ) throw()
: p_( holder<InstanceType>::unique() )
{}
template< typename CompareType > bool instanceof() const throw()
{ return p_ == holder<CompareType>::unique(); }
private:
void* p_;
};
で、こう使う。
if( __object( obj ).instanceof<T>() ){ ... }
0468464
NGNGclass __object
{
template< typename Type > struct holder
{
static holder* unique()
{
static holder obj;
// ×return obj;
return &obj;
}
...
boost::any みたいなものに組み込めば面白いかなとも思ったけど、
type() があるからいらんわなー。
なんか1日無駄に過ごした気分。フゥ
0469デフォルトの名無しさん
NGNG0470デフォルトの名無しさん
NGNG0471デフォルトの名無しさん
NGNGstruct person{
int id;
std::string name;
};
struct personless
{
bool operator()( const person & l, const person & r ) const {
return (l.id < r.id);
}
bool operator()( const person & l, const int & r_id ) const {
return (l.id < r_id);
}
bool operator()( const int & l_id, const person & r ) const {
return (l_id < r.id);
}
};
typedef std::set<person, personless> PersonSet;
このとき
PersonSet ps;
PersonSet::iterator it = ps.find( 5 );
というように、findすると下のようなエラーがでます。
error C2663: 'find' : 2 オーバーロードに 'this' ポインタのための必要な定義がされていません。
これはどうしたら解決できるんでしょうか?
0472デフォルトの名無しさん
NGNGこんな風にしてもダメ?
struct person {
int id;
std::string name;
person(int i, char* str) : id(i), name(str) {}
};
// 途中略
int main()
{
PersonSet ps;
ps.insert(person(1, "def"));
ps.insert(person(5, "abc"));
PersonSet::iterator it = ps.find(person(5, "abc"));
std::cout << it->id << ' ' << it->name << std::endl;
}
0473471
NGNGええと、IDで検索するのが目的なのでこれではちょっと。
int一つ分冗長になるけれど
std::map<int ,person>
とするしかないのかな。
0474デフォルトの名無しさん
NGNGVC++(だよね?)付属のSTLをやめて STLport を入れれば解決するらしい。
http://www.google.co.jp/search?q=cache:ucnz7QO5270C:www.dodgson.org/lab/hat/map_like_set.html&hl=ja&ie=UTF-8
でなければ、setの中身オブジェクトの作成コストが低ければ
PersonSet ps;
...
person key = { 5, string("") };
PersonSet::iterator it = ps.find( key );
みたいにダミーのオブジェクトで検索…くらいしかないのではないかなぁ。
0475デフォルトの名無しさん
NGNGフォンドボー?
0476デフォルトの名無しさん
NGNG0477471
NGNGそのページ既に見てたのですが一番下のコード、コンパイルとおりますか?
ウチの環境VC6+STLportだと >>471 に示したエラーが出るんです。
って書いてたのですが、Releaseでコンパイルしたら通りました。
デバッグ時にわざわざ
#define_STLP_DEBUG 1
を定義してたのがダメだったようです。コメントアウトしたらデバッグでも
コンパイル通りました。
納得いかないけど解決手段として _STLP_DEBUGを使うのはあきらめます。
0478デフォルトの名無しさん
NGNGstd::setのfindはkeyそのものを探すので、IDで検索したければ、
std::mapのようにkeyとvalueが分離されているコンテナを使った
方がよい。std::setは明らかに不適。
0479デフォルトの名無しさん
NGNGMCD本39ページ解説の通りになってるけど
型"U"がコピーコンストラクタをprivateにしてたらコンパイルエラーだよね?
static Small Test(U);
じゃなくて
static Small Test(U&);
にすればいいと思うんだけどダメなのかな?
0480デフォルトの名無しさん
NGNGそれだと二重参照が起きたりしない?
0481デフォルトの名無しさん
NGNGを使えってことなんだろうね。Lokiはそもそも教育用のサンプルなんだし。
それにしてもboostのソースはLokiよりも読むのにえらい時間がかかるなあ。
0482デフォルトの名無しさん
NGNG二重に間違えてスマソ
0483デフォルトの名無しさん
NGNGstd::setのメンバ関数のfindは使えないけど、こんなのはどうだ。
struct person {
int id;
std::string name;
person(int i, char* str) : id(i), name(str) {}
bool operator==(int i) const {
return id == i;
}
};
// 中略
int main()
{
PersonSet ps;
ps.insert(person(1, "def"));
ps.insert(person(5, "abc"));
PersonSet::iterator it = std::find(ps.begin(), ps.end(), 5);
std::cout << it->id << ' ' << it->name << std::endl;
}
0484デフォルトの名無しさん
NGNGstruct person {
int id;
std::string name;
person(int i, char* str) : id(i), name(str) {}
};
class cmp {
int key;
public:
cmp(int i) : key(i) {}
bool operator()(person& p) const {
return key == p.id;
}
};
// 中略
int main()
{
PersonSet ps;
ps.insert(person(1, "def"));
ps.insert(person(5, "abc"));
PersonSet::iterator it = std::find_if(ps.begin(), ps.end(), cmp(5));
std::cout << it->id << ' ' << it->name << std::endl;
}
0485デフォルトの名無しさん
NGNGそれはアホやろ。
0486デフォルトの名無しさん
NGNGやっぱり?(^_^;)
0487デフォルトの名無しさん
NGNGでるんだが、VC++.NETだとエラーにならない。...バグなのかなぁ?
#include<sstream>
#include<vector>
using namespace std;
struct a
{
stringstream _Base;
template<typename _Alloc> void operator>>(std::basic_string<unsigned char, std::char_traits<unsigned char>, _Alloc>& str)
{
std::basic_string<char, std::char_traits<char>,_Alloc > strbuf;
( (*this) >> strbuf);//////ここ
str= reinterpret_cast<const unsigned char*>(strbuf.c_str());
}
template<typename _Alloc> void operator>>(std::basic_string<char, std::char_traits<char>, _Alloc>& str)
{
_Base >> str;
}
};
int main()
{
a A;
basic_string<unsigned char> str;
A >> str;
}
0488デフォルトの名無しさん
NGNGgcc3.2.1だとエラーが多くてコンパイルできない。何とかしてくれ。
0489C++厨
NGNG0490デフォルトの名無しさん
NGNG#include<vector>
class A
{
public:
std::stringstream _Base;
template<typename _Alloc> void operator>>(std::basic_string<unsigned char, std::char_traits<unsigned char>, _Alloc>& str)
{
std::basic_string<char, std::char_traits<char>,_Alloc > strbuf;
( *this >> strbuf);//////ここ
str.assign(reinterpret_cast<const unsigned char*>(strbuf.c_str()));
}
template<typename _Alloc> void operator>>(std::basic_string<char, std::char_traits<char>, _Alloc>& str)
{
_Base >> str;
}
};
int main()
{
A a;
std::basic_string<unsigned char> str;
a >> str;//(1)NG ->エラー
std::string str2;
a >> str2;//(2)OK
}
0491デフォルトの名無しさん
NGNGなんでこんなヘンなことやってるの?
operator bool()ではいけないんですか?
// implicit conversion to "bool"
typedef T * (this_type::*unspecified_bool_type)() const;
operator unspecified_bool_type() const // never throws
{
return ptr == 0? 0: &this_type::get;
}
0492デフォルトの名無しさん
NGNGニュース速報板だからね。
0493デフォルトの名無しさん
NGNG削除依頼を内容証明以外の方法で行っても有効ですが、条理が根拠ではありません。
意思表示の一般原則であり自明のことです。
免責の対象にはならないから安心してください。
0494デフォルトの名無しさん
NGNGsmart_ptr p;
int x = p + 1;
こんなクソコード書く奴にコンパイルエラーを叩きつけるため。
0495491
NGNGhttp://lists.boost.org/MailArchives/boost/msg38117.php
あたりでやりとりされてるけど、ようわからん。
それによると・・・
・operator bool()ではintへの暗黙の型変換をするからダメ。->なんで?
・private:operator int()してもダメ。->なんで?
0496デフォルトの名無しさん
NGNG0497491
NGNGそうか、intになってしまったら*+-/なんかの演算子が許されるのか・・・
0498デフォルトの名無しさん
NGNG> ・private:operator int()してもダメ。->なんで?
これは結構いいんでない?という結論になったのでなかったか。
smart_ptr p;
cout << p << endl;
がコンパイル通ってbool値を表示してしまうという問題はあるけれど。
0499デフォルトの名無しさん
NGNGstd::basic_string<unsigned char> str;
const unsigned char* p = (const unsigned char*)"abc";
str = p; //もしくはstr.assign(p);
どおして通らないのかどなたかわかりません?
0500デフォルトの名無しさん
NGNG0501デフォルトの名無しさん
NGNG>>487>>490のリストをgccでコンパイルするとエラーになるので、エラーが再現
する最小のプログラムを探していったら>>499になりました。
単にstd::basic_stringをunsigned charで型特定しただけなのになぜエラーが
出るんでしょうね?
0502デフォルトの名無しさん
NGNGなにか基本的なことがわかってないっぽい<自分
0503デフォルトの名無しさん
NGNG0504デフォルトの名無しさん
NGNGリンクエラー
0505デフォルトの名無しさん
NGNG報告しようとしない変態リンカが存在するのか、、、
デバッグもさぞ大変な事だな、、
0506デフォルトの名無しさん
NGNGundefined reference to `std::char_traits<unsigned char>::copy(unsigned char*, unsigned char const*, unsigned)'
undefined reference to `std::char_traits<unsigned char>::move(unsigned char*, unsigned char const*, unsigned)'
undefined reference to `std::char_traits<unsigned char>::copy(unsigned char*, unsigned char const*, unsigned)'
undefined reference to `std::char_traits<unsigned char>::copy(unsigned char*, unsigned char const*, unsigned)'
undefined reference to `std::char_traits<unsigned char>::move(unsigned char*, unsigned char const*, unsigned)'
undefined reference to `std::char_traits<unsigned char>::copy(unsigned char*, unsigned char const*, unsigned)'
です
0507デフォルトの名無しさん
NGNGgcc version 2.95.2 19991024 (release)
では、ちゃんとコンパイル・リンクできたが。
0508デフォルトの名無しさん
NGNG書いてあるとおりだと思うが。std::char_traits<>::xxx() ってテンプレート
関数を unsigned char で特殊化したものを用意しろ、ってことだろ。
0509デフォルトの名無しさん
NGNGそれともSTLの仕様?
バグならバグレポート書きたいのだけど。
0510デフォルトの名無しさん
NGNGそのレベルの人間は、規格書をチェックでしょう。
0511デフォルトの名無しさん
NGNGここを見る限りじゃどうもバグじゃないっぽい。
bits/char_traits.hの中を見れば<char>と<wchar_t>しか処理が書かれて
なくて、それ以外の型を処理の書かれてないデフォルトで
拾うようになっている。ということはunsigned char、signed charは
使うなっていう暗黙のメッセージなのかな、これは?
http://www.bohyoh.com/CandCPP/FAQ/FAQ00001.html
ただここに書かれているように"char"の符号の有無は処理系依存なんだよねえ。
この辺はどうするつもりなんだろう。gcc以外のコンパイラなど使うなっていう意味かな??w
0512デフォルトの名無しさん
NGNG499です。
charとwcahr_tで型特定されているのは、多分効率を重視するためでしょうね。
その反面、basic_stringで独自の型を用意しようとすると、assign()などのメンバ
を自分で用意してやらないといけなくなったと。
これで、悩まずに済むようになりました。ありがとうございました。
0513デフォルトの名無しさん
NGNGにはなりません。それは、多分型特定してないからですね。
Include\stl\string.hを見てもそれらしい型特定はありません。
Borland-C++5.6.2はSTLportなので、確実な事は言えませんがgccでも
STLportを導入すればunsigned charの問題は回避できるような気がします。
0514山崎渉
NGNG0515デフォルトの名無しさん
NGNG0516質問
NGNGtemplate<int v> struct Int2Type{
public: enum { Value = v };
};
template<typename T1, typename T2, bool isT1GreaterThanT2> struct SizeCompareRaw {
typedef int Greater;
typedef int Lesser;
};
template<typename T1, typename T2> struct SizeCompareRaw<T1, T2, true> {
typedef T1 Greater;
typedef T2 Lesser;
};
template<typename T1, typename T2> struct SizeCompareRaw<T1, T2, false> {
typedef T2 Greater;
typedef T1 Lesser;
};
template<typename T1, typename T2> struct SizeCompare{
typedef SizeCompareRaw<T1, T2, Int2Type<(sizeof(T1) > sizeof(T2))>::Value >::Greater Greater;
typedef SizeCompareRaw<T1, T2, Int2Type<(sizeof(T1) > sizeof(T2))>::Value >::Lesser Lesser;
};
typedef SizeCompare<SizeCompare<int, char>::Greater, long long>::Greater GreatestType;
もしあったら、もっと単純できれいな実装でしょうか?
0517デフォルトの名無しさん
NGNG何がしたいのか、日本語で書いてみないか?
0518デフォルトの名無しさん
NGNG> loki にはないですか?
Loki は小さいから自分で調べてみるとよろし。
少なくとも俺の記憶では、そのものズバリは無いんじゃないかと…
> もっと単純
Int2Type 使わなくともいいと思う。
あと、1番上の SizeCompareRaw の定義はいらない。
Loki::Select を再利用するとか…
template<class T, class U> Large {
typedef Select<sizeof(T) > sizeof(U), T, U>::Result Result;
};
0519山崎渉
NGNG0520デフォルトの名無しさん
NGNG特別な技法を使うんじゃなく、
構文が使えたら便利だよね。
(回りくどい表現になりがちだから。)
0521516
NGNG>>517
サイズの大きい方の型を得たかったのです。
>>518
上のソースが、Modern C++ を読んでから自分ではじめて考えた
generative 風のコードなので
(モダ++に)解説されている範囲外は、ソース見ても、まださっぱりなんですよ^^;
(見ても求めているものかどうかよくわからないんです、試せばいいのですが…^^; 本格的に g++ に乗り換えかな…)
これから少しずつ精進していこうと思います。
Int2Type を使わないで書くとどういう感じなのでしょう?
さっぱり思い当たらないのですが、ヒントだけでもいただけないでしょうか?
>>520
host-policy とかも、文法レベルでサポートしてほしいですよね。
loki を見てると、ライブラリでやる範疇をそろそろ超えているような気が…
(いい意味で捕らえると C++ の(これまでの)限界を打ち破る力だと思うのですが…)
0522デフォルトの名無しさん
NGNGLokiが使えるなら、ヒントどころか答えが>>518に書いてあると思うんだが。
0523デフォルトの名無しさん
NGNGtupleのvectorをtupleの第1要素でソートしたいときどうしたらいいんでしょう。
typedef boost::tuple<int, double> Tuple;
std::vector<Tuple> data;
// data.push_back(boost::make_tuple(1, 1.0)); ....
std::sort(data.begin(), data.end(),
boost::bind(
std::less<int>(),
boost::bind(boost::mem_fn(&Tuple::get<0>, _1),
boost::bind(boost::mem_fn(&Tuple::get<0>, _2)
));
これだとコンパイル通りませんでした。
(BCB6で「コンパイラ内部のエラー」)
なんか間違ってるでしょうか。
それか、こういう場合もっと簡単な方法があるんでしょうか?
0524デフォルトの名無しさん
NGNG0525デフォルトの名無しさん
NGNGstruct CompByTuple1st
{
bool operator()(const Tuple& t1, const Tuple& t2)
{
return t1.get_head() < t2.get_head();
}
};
を比較用の関数オブジェクトとして sort に渡す、かねぇ。汎用性ゼロ
だが。
0526デフォルトの名無しさん
NGNGそれであってる (gccなら通る) 。…が、その場合 mem_fn はなくてもOK。
BCBでまともに boost::bind を動かすのはあきらめた方が無難ではないかと。
0527デフォルトの名無しさん
NGNGとりあえず、比較オブジェクトをtemplateにして
template <typename T, int I>
struct CompareByNth
{
bool operator()(const T & a, const T & b) const
{
return a.get<I>() < b.get<I>();
}
};
で逃げることにしました。これにstd::lessを簡単に渡せればいいんですけど…
0528デフォルトの名無しさん
NGNGgccで通った?俺はg++3.2.1で試してみたが、
C:/MinGW/Learn/boost/tuple.cpp:18: no matching function for call to `mem_fn(
<unknown type>, boost::arg<1>&)'
C:/MinGW/Learn/boost/tuple.cpp:19: no matching function for call to `mem_fn(
<unknown type>, boost::arg<2>&)'
C:/MinGW/Learn/boost/tuple.cpp:21: parse error before `;' token
なんてエラーが出やがる。
0529デフォルトの名無しさん
NGNG0530デフォルトの名無しさん
NGNGboost::mem_fnを取ったらg++で通ったよ。
0531526
NGNGあーほんとだ。523のをコピペじゃなくて書き写したんで、微妙に
違うコードをコンパイルしてたわ。
sort( data.begin(), data.end(),
bind( less<int>(),
bind( mem_fn(&Tuple::get<0>), _1),
bind( mem_fn(&Tuple::get<0>), _2) ));
//mem_fnは無くてOK。
0532デフォルトの名無しさん
NGNGスマートに書けないものでしょうか?
struct A {
virtual int func() {
return 1;
}
};
struct B : public A {
int func() {
return 2;
}
};
int AddA(int i, A* a)
{
return i + a->func();
}
0533デフォルトの名無しさん
NGNG{
std::vector<A*> a;
const int maxi = 100000;
for (int i = 0; i < maxi; i++)
if (std::rand() % 2)
a.push_back(new A);
else
a.push_back(new B);
int i;
std::accumulate(a.begin(), a.end(), 0, AddA);
std::cout << i << std::endl;
}
0534デフォルトの名無しさん
NGNGback_inserter と generator 使うと、もっとうまく書けそうな予感。
0535デフォルトの名無しさん
NGNGstruct Add {
int value;
Add(int i) : value(i) {}
void operator()(A* a) {
value += a->func();
}
};
int main()
{
std::vector<A*> a;
const int maxi = 100000;
for (int i = 0; i < maxi; i++)
if (std::rand() % 2)
a.push_back(new A);
else
a.push_back(new B);
int i;
i = std::for_each(a.begin(), a.end(), Add(0)).value;
std::cout << i << std::endl;
}
0536デフォルトの名無しさん
NGNGback_inserterを使うという事は、他のvectorに値を入れるという事でしょうか?
0537デフォルトの名無しさん
NGNGint main()
{
std::vector<A*> a;
std::vector<int> b;
const int maxi = 100000;
for (int i = 0; i < maxi; i++)
if (std::rand() % 2)
a.push_back(new A);
else
a.push_back(new B);
std::transform(a.begin(), a.end(), std::back_inserter(b), std::mem_fun(&A::func));
int i;
i = std::accumulate(b.begin(), b.end(), 0);
std::cout << i << std::endl;
}
0538デフォルトの名無しさん
NGNGinline A* gen()
{
return (std::rand() % 2) ? new A : new B;
}
int main()
{
std::vector<A*> a;
std::vector<int> b;
const int maxi = 100000;
std:generate_n(std::back_inserter(a), maxi, gen);
std::transform(a.begin(), a.end(), std::back_inserter(b), std::mem_fun(&A::func));
int i;
i = std::accumulate(b.begin(), b.end(), 0);
std::cout << i << std::endl;
}
0539デフォルトの名無しさん
NGNG#include <boost/iterator_adaptors.hpp>
int accumulate( const std::vector< A* >& v )
{
    std::mem_fun_t< int , A > func( &A::func );
    return std::accumulate(   boost::make_transform_iterator( v.begin() , func )
                            , boost::make_transform_iterator( v.end() , func )
                            , 0 );
}
0540デフォルトの名無しさん
NGNGすぐにInternal compiler errorを吐きやがります。
VC6は食います。
そんなもんですかね。
0541デフォルトの名無しさん
NGNGすげー!こんなコードが書けるのか。
やっぱりSTLやboostは奥が深いですねえ。
0542デフォルトの名無しさん
NGNGVCも使ってるって事は、gccはcygwinかMinGW?
0543デフォルトの名無しさん
NGNGYES YES YES
gcc3,VC7ではもちろんとおります
0544デフォルトの名無しさん
NGNGgcc2.95.2にこだわる理由は何?
もしかして仕事で使っているとか?
0545デフォルトの名無しさん
NGNGstd::vector<A*> a を generate_n で作るまでは OK として、その後は
std::accumulate(v.begin(), v.end(), 0,
boost::compose_f_gx_hy(
std::plus<int>(),
std::identity<int>(),
std::mem_fun(&A::func)
));
ってな感じでどう?
0546545
NGNGうまいな。そっちの方が見やすいかもしれん。
>>540
template 使いたいなら gcc 3 系列に移行しましょう。
…俺も仕事でいまだに gcc 2.96 使ってるけど、早く捨てたい。
0547543
NGNG仕事なんでVC6/GCC2.95を使わざるをえません。
あれからいろいろいじったけど、
どうやってもgcc2.95で通らないんだな。
vc6は、使うものしか処理しないって感じだねえ。
gcc2.95は、使おうが使うまいが、ある程度処理するみたい。
落ちてるところは実際には使われない部分だったりするからナントモ。
0548デフォルトの名無しさん
NGNGstd::identityってのは初めて見ました。ここの文脈ではint()とは書けないから
必要なんですね。標準C++には無いようですが、STLportには幸いにも装備
されていました。
0549デフォルトの名無しさん
NGNGこれの代用になる物がありますか?
■ このスレッドは過去ログ倉庫に格納されています