Достало писать кучу boilerplate'а.
В старом недобром С++03 нужно для классов было определять: копирующий констркутор, конструктор по умолчанию, оператор присваивания. Ещё терпимо. В С++11 сюда ещё добавился конструктор перемещения и оператор присваивания с перемещением. Уже достаёт — в классе из четырёх строчек получается строк 20 стандартного кода.
А ещё есть операторы сравнения и присваивания. Что есть хорошего, разумного, вечного для одоления этого недуга?
Заодно вечная проблема с дублирующимися методами:
const std::string& get_str() const { return str_; }
std::string& get_str() { return str_; }
тоже уже достала.