C++0x では、可変引数版の min/max/minmax が導入されます。
(※ minmax は新規。戻り値で min と max の pair を返す)
可変引数の指定には、 std::initializer_list を使用します。
// <algorithm> template<class T> T min(initializer_list<T> t); template<class T, class Compare> T min(initializer_list<T> t, Compare comp); template<class T> T max(initializer_list<T> t); template<class T, class Compare> T max(initializer_list<T> t, Compare comp); template<class T> pair<const T&, const T&> minmax(initializer_list<T> t); template<class T, class Compare> pair<const T&, const T&> minmax(initializer_list<T> t, Compare comp);
int value = min({3, 1, 4, 5, 2}); // 1 int value = max({3, 1, 4, 5, 2}); // 5 pair<int, int> values = minmax({3, 1, 4, 5, 2}); // first == 1, second == 5
可変引数版の min/max/minmax は元々は可変引数テンプレートでの実装が提案されていましたが
以下のエントリにある議論から、 std::initializer_list を使用するよう変更されました。
N2772 Variadic functions: Variadic templates or initializer lists? -- Revision 1