下面的代碼是在Ubuntu標準包中提供的類初始化程序列表。在這個迭代器和const_iterator中是相同類型的typedef。我只是想知道爲什麼我們希望爲不同類型的迭代器使用相同的typedef?理想的Iterator應該有typedef _E *迭代器。同一類型的多個typedef
// In the class initializer list:
namespace std
{
/// initializer_list
template<class _E>
class initializer_list
{
public:
typedef _E value_type;
typedef const _E& reference;
typedef const _E& const_reference;
typedef size_t size_type;
typedef const _E* iterator;
typedef const _E* const_iterator;
P.S:我不能如此,因爲這些領域是由滿足Container
要求的任何類型的要求我給這個稱號
我認爲':: reference'應該是'typedef _E&'not'typedef const _E&'。 – 0x499602D2 2013-02-13 17:44:52
您不希望能夠修改initializer_list對象中的任何內容,但它需要:: reference才能滿足Container概念的要求,因此它們將其標記爲const。 – bstamour 2013-02-13 17:48:50