Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- class Objekt {
- public:
- Objekt(){
- std::cout << "Konstruktor obiektu" << std::endl;
- }
- Objekt(const Objekt& obj) {
- std::cout << "Konstruktor kopiujacy obiektu" << std::endl;
- }
- Objekt(Objekt&& obj) {
- std::cout << "Konstruktor move(ravalue) obiektu" << std::endl;
- }
- Objekt& operator=(const Objekt& obj) {
- std::cout << "Normalne przypisanie" << std::endl;
- return *this;
- }
- Objekt& operator=(Objekt&& obj) {
- std::cout << "przypisanie move(rvalue)" << std::endl;
- return *this;
- }
- };
- std::vector<Objekt> f(void)
- {
- std::vector<Objekt> a{ Objekt() };
- return a;
- }
- template<typename Container, typename Index>
- decltype(auto) funkcja(Container&& c, Index i)
- {
- return std::forward<Container>(c)[i];
- }
- int main() {
- Objekt x = funkcja(f(), 0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement