This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: std::packaged_task trunk problem


Jonathan Wakely <jwakely.gcc@gmail.com> writes:

| On 3 November 2011 16:17, Jonathan Wakely wrote:
>>
>> Something like ...
>>
>> template<typename Moveable>
>> struct PretendToBeCopyable
>> {
>> ?explicit PretendToBeCopyable(Moveable&& m) : m(m) {}
>
| Oops, that mem-initializer would need to be m(std::move(m))

This is the wrapper I ended up with. I had to remove the throw, it
triggered all the time.

template<typename Moveable>
struct PretendToBeCopyable
{
        explicit PretendToBeCopyable(Moveable&& m) : m(std::move(m)) {}
        PretendToBeCopyable(PretendToBeCopyable&&) = default;
        PretendToBeCopyable(PretendToBeCopyable& p)
                : m(std::move(p.m)) {}
        void operator()() { m(); }
private:
        Moveable m;
};

}

-- 
   Lgb


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]