implicit_cast

  • ややこしいんですが、暗黙の変換も明示するとコードの意味が明確になる・・・参照
  • static_castは意味が多すぎて駄目である

[]#include[] []<boost/implicit_cast.hpp>[]
[]#include[] []<boost/optional.hpp>[]

[]struct[] []B[]
[]{ };[]

[]struct[] []D[][] : [][]B[]
[]{ };[]


[]void[] []test[][]()[]
[]{[]
[]D[] []d[][];[]

[]//boost::optional<B&> o1(d); // error[]
[]boost[][]::[][]optional[][]<[][]B[][]&> [][]o2[][]([][]boost[][]::[][]implicit_cast[][]<[][]B[][]&>([][]d[][]));[]
[]}[]