|
Boost Users : |
Subject: [Boost-users] Boost.Move template-function parameter
From: Luke J. West (ljw_at_[hidden])
Date: 2012-01-12 05:27:15
Hi. I'm trying to implement a template function that 'moves' it's
parameter. Here's a simple moveable class...
struct my_class {
my_class() {}
my_class(BOOST_RV_REF(my_class)) {}
my_class& operator=(BOOST_COPY_ASSIGN_REF(my_class) c) {return *this;}
BOOST_COPYABLE_AND_MOVABLE(my_class);
};
And here is the function...
template<typename T > void steal(BOOST_COPY_ASSIGN_REF(T) c) {}
so it works fine when I do this...
int main() {
my_class c;
steal<my_class >(c);
}
but not when I do this...
int main() {
int c;
steal<int >(c);
}
It's as if 'int' is not a movable type which of course it trivially
is. I read that Boost.Container classes are 'move aware' and I assume
boost::vector<int > works, so what am I doing wrong - how to write my
'steal' function capable of moving it's argument when it's moveable
class, but not breaking for primitives?
Thanks,
Luke (hopeful newbie!)
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net