Ticket #6618: simple_req.cpp

File simple_req.cpp, 1.2 KB (added by Charles David Tallman <DaveTallman@…>, 11 years ago)

Source file that will not compile under g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-52)

Line 
1#include <boost/container/map.hpp>
2#include <boost/container/flat_map.hpp>
3#include <boost/container/vector.hpp>
4#include <boost/move/move.hpp>
5#include <iostream>
6
7struct Request
8{
9 Request() {};
10
11 //Move semantics...
12 Request(BOOST_RV_REF(Request) r) : rvals() //Move constructor
13 {
14 rvals.swap(r.rvals);
15 };
16
17 Request& operator=(BOOST_RV_REF(Request) r) //Move assignment
18 {
19 if (this != &r){
20 rvals.swap(r.rvals);
21 }
22 return *this;
23 };
24
25 // Values I want to be moved, not copied.
26 boost::container::vector<int> rvals;
27
28 private:
29 // Mark this class movable but not copyable
30 BOOST_MOVABLE_BUT_NOT_COPYABLE(Request)
31};
32
33typedef boost::container::flat_map<int, Request> Requests;
34//typedef boost::container::map<int, Request> Requests2;
35
36int
37main() {
38 Requests req;
39 std::pair<Requests::iterator, bool> ret = req.insert( Requests::value_type( 7, boost::Request() ) );
40 std::cout << "Insert success for req: " << ret.second << std::endl;
41
42 //Requests2 req2;
43 //std::pair<Requests::iterator, bool> ret2 = req2.insert( Requests2::value_type( 7, Request() ) );
44 //std::cout << "Insert success for req2: " << ret2.second << std::endl;
45
46 return 0;
47}