- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
template<class TValueChanger1, class TValueChanger2, class TValueChanger3>
NContour::NPrimitives::PArc ChangePrimitive(NContour::NPrimitives::PArc Arc, const TValueChanger1& ValueChanger1, const TValueChanger2& ValueChanger2, const TValueChanger3& ValueChanger3)
{
return
boost::static_pointer_cast<NContour::NPrimitives::TArc>(ValueChanger3(
boost::static_pointer_cast<NContour::NPrimitives::TArc>(ValueChanger2(
boost::static_pointer_cast<NContour::NPrimitives::TArc>(ValueChanger1(
Arc
))
))
));
}
Arc - константный смартпоинтер на константную структуру константных полей.
Каждый ValueChanger пересоздаёт структуру с измененным одним полем.