Приведение общего _ptr к общему _ptr

У меня есть структура:

struct Params {
   std::shared_ptr<void> user_data;
   /*... */
};

Я хочу использовать его вот так:

int main() {
  std::shared_ptr<SpecializedParams> sp(new SpecializedParams(100));
  Params params;
  /*... */
  params.user_data = std::static_pointer_cast<void>(sp); 
  /*... */
  std::shared_ptr<SpecializedParams> sp2 = 
    std::static_pointer_cast<SpecializedParams>(
      params.user_data
    );
  /*... */
  return 0;
}

Это допустимо и безопасно?

9
задан perreal 23 July 2012 в 17:43
поделиться