GSL.util: Utilities

  • finally // finally(f) makes a final_action{f} with a destructor that invokes f
  • narrow_cast // narrow_cast<T>(x) is static_cast<T>(x)
  • narrow // narrow<T>(x) is static_cast<T>(x) if static_cast<T>(x) == x or it throws narrowing_error
  • [[implicit]] // "Marker" to put on single-argument constructors to explicitly make them non-explicit.
  • move_owner // p = move_owner(q) means p = q but ???