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

Сообщение Re: move argument от 16.11.2015 13:54

Изменено 16.11.2015 13:58 Igore

Здравствуйте, Logot, Вы писали:

L>MS VS 2013

L>Как можно сделать, чтобы работало?
Проверил на 2015, хотя это может не совсем то что тебе нужно
#include <utility>

struct movable
{
};

class one
{
public:
    one(movable&& m)
        : _m(m)
    {}

    movable    _m;
};

class creator
{
public:
    template<typename S, typename ... Args>
    static S* create(Args ... args)
    {
        return new one(std::move(args ...));
    }
};

int main(int , char** )
{
    movable m;
    creator::create<one, movable&&>(std::move(m));
    return 0;
}
Re: move argument
Здравствуйте, Logot, Вы писали:

L>MS VS 2013

L>Как можно сделать, чтобы работало?
Проверил на 2015
#include <utility>

struct movable
{
};

class one
{
public:
    one(movable&& m)
        : _m(m)
    {}

    movable    _m;
};

class creator
{
public:
    template<typename S, typename ... Args>
    static S* create(Args ... args)
    {
        return new one(std::move(args ...));
    }
};

int main(int , char** )
{
    movable m;
    creator::create<one, movable&&>(std::forward<movable>(m));
    return 0;
}