vector referencji

0

Pytanie do jakis madrzejszych uzytkownich forum. dlaczego powizszy kod sie nie kompiluje:
http://ideone.com/y32Fxf
wektor pair referencji juz jest okej

1

vector wymaga domyślnego konstruktora, referencja nie ma domyślnego, przecież nie możesz zapisać int &a;
Ale listy mapy możesz użyć.

2

Referencji nie możesz skopiować/przenieść, co jest wymogiem wektora. Jak tego potrzebujesz to std::reference_wrapper (std::ref) może się przydać. pair/tuple po prostu mają podefiniowane odpowiednie operatory.

2

Podsumowując:
http://en.cppreference.com/w/cpp/container/vector
obiekty przechowywane w std::vector muszą spełniać:

  • w C++11 CopyConstructible concept, którego referencje z oczywistych względów nie spełniają
  • w C++14 Erasable concept, którego referencje nie spełniają, ponieważ wymaga on tworzenia wskaźnika na ów referencje
    http://en.cppreference.com/w/cpp/concept/Erasable
    Natomiast wskaźnika na referencje mieć nie można. Odwrotnie można.
    8.3.4: There shall be no references to references, no arrays of references, and no pointers to references.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0