あめだまふぁくとりー

Boost.Graphとかできますん

大晦日

あとちょっとで新年だけど一人で修論書く以外にすることないよ….

private継承の名前探索

class Base1 {
  public:
    void f() { }
};

class Base2 {
  public:
    void f() { }
};

class Derived :
  public Base1,
  private Base2 {
};

int main()
{
  Derived d;
  d.f();   // request for member 'f' is ambiguous
}

プライベート継承なら名前探索されないかもと思ったけどそんなこともなかった.

Mutable Graph

BGLには様々なグラフのコンセプトがある.その一つとしてMutable Graphコンセプトがある.このコンセプトに従うグラフからは節点,枝の追加・削除を行うことができる.
今ここに節点,枝の追加は許すが,削除はできないグラフクラスAがあったとしよう.一般的に追加に対して削除はコストが大きいのでこのようなグラフクラスがあっても不思議ではない.このグラフクラスAは明らかにMutable Graphコンセプトを満たしていない.そのためMutable Graphコンセプトを必要とするアルゴリズムに適用することはできない.Mutable Graphコンセプトを必要とするアルゴリズムにcopy_graphがある.これは二つのグラフオブジェクトを受け取って片方をもう一方にコピーするだけのアルゴリズムだ(正確には節点と枝を追加しているだけ).このアルゴリズム内では削除は行われない.ならばグラフクラスAもこのアルゴリズムを使用できてもいいのではないだろうか?Mutable Graphコンセプトを追加のコンセプト,削除のコンセプトに分割しても良いのではないのだろうか?(終わり)