この質問は少し理論的std::minmax
なものかもしれませんが、このように定義する背後にある設計のインセンティブは何なのだろうか
template <class T>
pair<T,T> minmax (initializer_list<T> il);
つまり、渡されたオブジェクトであるIMOli
がコピーされ、その各メンバーもコピー構築可能でなければなりません。
一方、std::min_element
(またはこの件に関してstd::max_element
) は、コンテナ イテレータのみが渡されるという意味でより「効率的」です (実際にコンテナ全体をコピーする必要はありません)。
template <class ForwardIterator>
ForwardIterator min_element (ForwardIterator first, ForwardIterator last);
編集 - Joachim Pileborg のコメントに基づいて、initializer_list<T>
オブジェクトがコピーされていないため、質問を特定しています - なぜstd::minmax
、任意のコンテナーではなく、そのようなオブジェクトに制約されているのか (いわば「非定数」の性質を持つ)