Информация об изменениях

Сообщение Re[3]: Эмулирую tuples такие, какими они сделаны в python, м от 25.12.2019 4:10

Изменено 25.12.2019 4:16 rg45

Re[3]: Эмулирую tuples такие, какими они сделаны в python, матл
Здравствуйте, alexanderfedin, Вы писали:

A>Вот, сделал: https://onlinegdb.com/Hy9aM4g1U


Зачем делать сложным то, что проще простого. Все придумано до нас:

https://onlinegdb.com/SyEdevxkU

    template <typename...> class tuple;
    template <> class tuple<> {};

    template <typename T, typename...U>
    class tuple<T, U...>
    {
    public:
        tuple() = default;

        template <typename X, typename...Y>
        tuple(X&& x, Y&&...y)
            : head_(std::forward<X>(x))
            , tail_(std::forward<Y>(y)...) { }

        template <typename X, typename...Y>
        tuple& operator = (const tuple<X, Y...>& t)
        {
            head_ = T(t.head_);
            tail_ = t.tail_;
            return *this;
        }

    private:
        template <typename...> friend class tuple;
        using tail = tuple<U...>;
        T head_;
        tail tail_;
    };

    template <typename...T>
    tuple<T...> make_tuple(const T&...t) {
        return {t...};
    }

    template <typename...T>
    tuple<T&...> tie(T&...t) {
        return {t...};
    }
Re[3]: Эмулирую tuples такие, какими они сделаны в python, м
Здравствуйте, alexanderfedin, Вы писали:

A>Вот, сделал: https://onlinegdb.com/Hy9aM4g1U


Зачем делать сложным то, что проще простого. Все придумано до нас:

https://onlinegdb.com/Sk4YMvgJU

    template <typename...> class tuple;
    template <> class tuple<> {};

    template <typename T, typename...U>
    class tuple<T, U...>
    {
    public:
        tuple() = default;

        template <typename X, typename...Y>
        tuple(X&& x, Y&&...y)
            : head_(std::forward<X>(x))
            , tail_(std::forward<Y>(y)...) { }

        template <typename X, typename...Y>
        tuple& operator = (const tuple<X, Y...>& t)
        {
            head_ = T(t.head_);
            tail_ = t.tail_;
            return *this;
        }

    private:
        template <typename...> friend class tuple;
        T head_;
        tuple<U...> tail_;
    };

    template <typename...T>
    tuple<T...> make_tuple(const T&...t) {
        return {t...};
    }

    template <typename...T>
    tuple<T&...> tie(T&...t) {
        return {t...};
    }