Pytanie do jakis madrzejszych uzytkownich forum. dlaczego powizszy kod sie nie kompiluje:
http://ideone.com/y32Fxf
wektor pair referencji juz jest okej
0
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.