By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
454,920 Members | 1,226 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 454,920 IT Pros & Developers. It's quick & easy.

composite types and std::swap

P: n/a
Consider the source snippet.
# include <iostream>
struct foo_struct {
int odx ;
int pdx ;
foo_struct ()
: odx ( 0 )
, pdx ( 0 )
{}
};

int main()
{

foo_struct fs1;
fs1.odx = 2 ;
fs1.pdx = 5 ;
foo_struct fs2;
std::swap ( fs1, fs2 ) ;
}

Ideally I could provide my own copy constructor and assignment
operator for foo_struct, nonetheless, I'm more interested in whether
the use of std::swap on the composite ( non-POD types ) makes the
program ill-formed?

Thanks in advance.

Mar 24 '07 #1
Share this Question
Share on Google+
1 Reply


P: n/a
* ma740988:
>
# include <iostream>
struct foo_struct {
int odx ;
int pdx ;
foo_struct ()
: odx ( 0 )
, pdx ( 0 )
{}
};

int main()
{

foo_struct fs1;
fs1.odx = 2 ;
fs1.pdx = 5 ;
foo_struct fs2;
std::swap ( fs1, fs2 ) ;
}

Ideally I could provide my own copy constructor and assignment
operator for foo_struct, nonetheless, I'm more interested in whether
the use of std::swap on the composite ( non-POD types ) makes the
program ill-formed?
No.

The effect is the same as

foo_struct temp;
temp = fs1; fs1 = fs2; fs2 = temp;

which just uses the compiler-generated copy assignment operator.

--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?
Mar 24 '07 #2

This discussion thread is closed

Replies have been disabled for this discussion.