auto_ptrの一時オブジェクトって、どうやってコピーしているの?
例えば
auto_ptr<int> foo() {
  auto_ptr<int> ap;
  return ap;
}
void bar() {
  auto_ptr<int> ap2 = foo(); // *1
}
という場合、gcc3.2で試してみると、fooの戻り値の一時オブジェクトを
auto_ptr_refに変換して、それからap2のコンストラクタを呼んでいる
ようなんだけど、これって暗黙のユーザー定義変換を2回実行している
ことにならない?*1の行が
  auto_ptr<int> ap2(foo());
なら分かるんだけど。