конструктор по умолчанию и частично сформированное значение
От: andyp  
Дата: 05.08.13 19:58
Оценка: -1
При просмотре лекции Степанова наткнулся на такой код —


template <typename T, typename N = std::size_t>
class list_pool {
public:
  typedef N list_type;
  typedef T value_type;
  //...не важно
private:
  //...не важно
public:
  struct iterator {
    typedef list_pool::value_type value_type;
    typedef list_pool::list_type difference_type;    
    typedef std::forward_iterator_tag iterator_category;

    typedef value_type& reference;
    typedef value_type* pointer; 

    list_pool* pool;
    list_pool::list_type node;

    iterator() {} //!!!!! creates a partially formed value
    
    //не важно
  };
};


Степанов говорит, что для объекта вполне нормально находиться в частично сконструированном состоянии, в котором ему может быть только присвоено значение или он может быть разрушен (ну типа как источник std::move собственно после std::move), но мне как-то это не очень нравится (инварианта-то после конструирования нет). А Вы бы определили конструктор по умолчанию в этом случае?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.