...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

boost::ptr_vector

あれー?
ptr_vector<>::end()はptr_vector<>::const_iteratorで受けられないのか?

#include <boost/ptr_container/ptr_vector.hpp>
struct A{};
void f() {
  boost::ptr_vector<A> x;
  boost::ptr_vector<A>::const_iterator end = x.end(); // C2440
  //どっちかならコンパイルできた
  //boost::ptr_vector<A>::const_iterator end = x.cend();
  //boost::ptr_vector<A>::interator end = x.end();
}

なぜかコンパイルできたりできなかったりする.
この部分だけ抜き出したらちゃんとコンパイル通るので最小再現コードがうまく作れない.

追記(2009.01.02 06:08)

オリジナルコードではf()はメンバ関数

#include <boost/ptr_container/ptr_vector.hpp>
struct A{};
struct B {
  boost::ptr_vector<A> x;
  void f() {
    boost::ptr_vector<A>::const_iterator end = x.end(); // C2440
    //どっちかならコンパイルできた
    //boost::ptr_vector<A>::const_iterator end = x.cend();
    //boost::ptr_vector<A>::interator end = x.end();
  };
};