6

非メンバー関数テンプレートbegin(container)end(container)C++0x の一部ですか? もしそうなら、それらはどのヘッダーファイルに住んでいますか?

4

1 に答える 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 に答える