'あ' みたいな2バイト長の文字定数って、やっぱり、標準ではみとめられて
ないのかな? 実際には(警告はでるけど)たいていのコンパイラで使える
みたいだけど。これを使って、

// 文字列コンバータのファンクタ
template<int C> struct Converter {
string operator()( const char* s );
};

// ソースがEUCで書かれている場合
template<> struct Converter<0xa4a2> { // 0xa4a2 == EUC('あ')
string operator()( const char* s );
};

// このソースの文字コード用のコンバータ
typedef Converter<(unsigned short)'あ'> ConverterT;

int main()
{
string s = ConverterT()( "あいうえお" );
}

みたいなことをやりたいんだけど…