---
# System prepended metadata

title: Untitled

---

#

- Ключевое слово `explicit`. Зачем нужны `explicit` конструкторы  

- зачем `auto&&`  

```cpp
for (auto&& s : shapes)  
{  
  s->draw(qp);  
}  
```

-  порассуждать, что с этим кодом не так  
```cpp
for (auto&& s : m_frame->shapes)  
{  
  try  
  {  
    dynamic_cast<Circle&>(*s);  
    out << "Circle" << endl;  
  }  
  catch (std::bad_cast) {}  
  try  
  {  
    dynamic_cast<Rectangle&>(*s);  
    out << "Rectangle" << endl;  
  }  
  catch (std::bad_cast) {}  
  try  
  {  
    dynamic_cast<Triangle&>(*s);  
    out << "Triangle" << endl;  
  }  
  catch (std::bad_cast) {}  
  
  s->color().getRgb(&r, &g, &b, &a);  
  
  out << r << ' ' << g << ' ' << b << ' ' << a << ' ' << s->pos().x() << ' ' << s->pos().y() << ' ' << s->size().width() << ' ' << s->size().height() << endl;  
}  
```
- порассуждать как можно покраше написать серриализацю, десериализацию  
- раз уж в коде сплошь и рядом используется `noexcept`, рассказать про спецификатор `noexcept`, оператор `noexcept`, в чем отличие от спецификации исключений через `throw()`