Connecting Tech Pros Worldwide Forums | Help | Site Map

composite types and std::swap

ma740988
Guest
 
Posts: n/a
#1: Mar 24 '07
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.


Alf P. Steinbach
Guest
 
Posts: n/a
#2: Mar 24 '07

re: composite types and std::swap


* ma740988:
Quote:
>
# 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?
Closed Thread