23 Ocak 2017 Pazartesi

std::in_place_t

Giriş
Template kodlarda kullanılır. Verilen parametreler ile nesnenin direkt kurulmasını sağlar. 
Örnek
Şöyle yaparız.
template<typename T>
class immutable
{
public:
  template<typename ...Args>
  immutable(std::in_place_t, Args &&...args) t(std::forward<Args>(args)...) {}

  immutable() = default;
  ~immutable() = default;

  immutable(const immutable &) = default;
  //Not moveable.
  immutable(immutable &&) = delete;

  //Not assignable.
  immutable operator=(const immutable &) = delete;
  immutable operator=(immutable &&) = delete;

  const T* operator->() const {return &t;}
  const T& operator*() const {return t;}

private:
  const T t;
};

Hiç yorum yok:

Yorum Gönder