
A type is Copy Constructible if it is possible to copy objects of that type.
| T | is type that is a model of Copy Constructible | 
| t | is an object of type T | 
| u | is an object of type const T | 
| Name | Expression | Return type | Semantics | 
|---|---|---|---|
| Copy constructor | T(t) | T | t is equivalent to T(t) | 
| Copy constructor | T(u) | T | u is equivalent to T(u) | 
| Destructor | t.~T() | T | |
| Address Operator | &t | T* | denotes the address of t | 
| Address Operator | &u | T* | denotes the address of u | 
  template <class T>
  struct CopyConstructibleConcept
  {
    void constraints() {
      T a(b);            // require copy constructor
      T* ptr = &a;       // require address of operator
      const_constraints(a);
      ignore_unused_variable_warning(ptr);
    }
    void const_constraints(const T& a) {
      T c(a);            // require const copy constructor
      const T* ptr = &a; // require const address of operator
      ignore_unused_variable_warning(c);
      ignore_unused_variable_warning(ptr);
    }
    T b;
  };
  Default
  Constructible and Assignable
Revised 05 December, 2006
| Copyright © 2000 | Jeremy Siek, Univ.of Notre Dame (jsiek@lsc.nd.edu) | 
Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)