非メンバー関数テンプレートbegin(container)
とend(container)
C++0x の一部ですか? もしそうなら、それらはどのヘッダーファイルに住んでいますか?
1 に答える
8
はい。ただし、 がswap
さまざまな場所で定義され、ADL に依存しているように、begin
とも同様end
です。「ジェネリック」バージョンは次のように定義されてい<iterator>
ます。
// 24.6.5, range access:
template <class C> auto begin(C& c) -> decltype(c.begin());
template <class C> auto begin(const C& c) -> decltype(c.begin());
template <class C> auto end(C& c) -> decltype(c.end());
template <class C> auto end(const C& c) -> decltype(c.end());
template <class T, size_t N> T* begin(T (&array)[N]);
template <class T, size_t N> T* end(T (&array)[N]);
24.6.5 には次のように記載されていることにも注意してください。
ヘッダーを含めることで利用できることに加えて、24.6.5 の関数テンプレートは、
<iterator>
次のいずれかのヘッダーが含まれている場合に使用できます:<array>
、<deque>
、<forward_list>
、<list>
、<map>
、<regex>
、<set>
、<string>
、<unordered_map>
および。<unordered_set>
<vector>
于 2011-07-30T10:48:00.197 に答える