C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 55 を表示中)
■30882 / )  Re[3]: ADL ってどこまで効くの?
□投稿者/ uskz (5回)-(2009/01/08(Thu) 15:37:39)
uskz さんの Web サイト
No30873 (774RR さん) に返信

> Q1.
> 「俺は c.push_back(make_pair("a", "b")); と書きたいんぢゃあ!」
> というわがままな要件にどう対応すればいいでしょう? (wcout 時に L"a" に直すのは手でやるとして)
> struct value_type : std::pair<std::string, std::string> {
> value_type(const std::pair<std::string, std::string>& a) : std::pair<std::string, std::string>(a) {}
> };
> としたのでは c.push_back(make_pair(string("a"), string("b"))); としなけりゃなりません。

必要なconstructorやobject generatorも用意したstd::pairもどきを適当な名前空間に作って使うくらいしか思いつきません(あるいはすでにあるBoost.FusionやTuple辺りを使う).


> Q2. (まあ Q1 と状況は同じなのですが)
> typedef std::pair<...> value_type; が変更できない場合、オレオレ operator<< をどう実装すべきでしょう?
> ないしは、実装できるのでしょうか?できないのでしょうか?

std名前空間にオーバーロードを追加するのがスマートだと思いますが,規格はそれを許していないのでstd::pairを直接使う限りは難しいように思います.
返信 編集キー/


管理者用

- Child Tree -