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[][]));[]
[]}[]