>>351
なるほど、->*なんて演算子もあるんですか。
降順か昇順かの切り替えも、コンストラクタの引数で指定できました。
C++を覚えるために、いろんなことを試しているのですが、なんだかC++は、とても複雑すぎるような……。

struct hoge
{
int x; int y; int z;
double d ;
char str[32] ;
} ;

何度もすみませんが、>>346の構造体をこのように拡張して、これを各メンバでソートするために、
>>349のfooクラスをテンプレート化してみたのですが、
hoge::strはどうすればいいのでしょうか。
ちょっと考えてみて、こんな風に特殊化してみたのですが
//>>349のfooクラスのテンプレート化
template<typename T>
class foo
{
//比較演算子を使った比較
} ;
//特殊化
template<>
class foo<char (hoge:: *)[32]>
{
//自分で定義した文字配列の比較をする、たとえばstrcmp()とか
} ;
sort(v.begin(), v.end(), foo<char (hoge:: *)[32]>(&hoge::x)

もっとスマートな方法はありますか?