ich den Code aus Header-Datei initializer_list
und umbenannt den Klassennamendie UMSETZUNG von std :: initializer_list
template<class _E>
class my_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;
private:
iterator _M_array;
size_type _M_len;
// The compiler can call a private constructor.
constexpr my_initializer_list(const_iterator __a, size_type __l)
: _M_array(__a), _M_len(__l) { }
public:
constexpr my_initializer_list() noexcept
: _M_array(0), _M_len(0) { }
// Number of elements.
constexpr size_type
size() const noexcept { return _M_len; }
// First element.
constexpr const_iterator
begin() const noexcept { return _M_array; }
// One past the last element.
constexpr const_iterator
end() const noexcept { return begin() + size(); }
};
und den Code my_initializer_list
kopiert:
int main()
{
my_initializer_list<int> foo = {1,2,3};
return 0;
}
und erhalten den Fehler:
could not convert '{1, 2, 3}' from '<brace-enclosed initializer list>' to 'my_initializer_list<int>'
Meine Frage: Wie STL die initializer_list Klasse implementieren?
Aus demselben Grund können Sie die Definition von 'std :: typeinfo' nicht copy-paste und verwenden Sie dann' typeid' eins zu bekommen. – immibis