C++ concepts: CopyConstructible
From cppreference.com
                    
                                        
                    
                    
                                                            
                    Specifies that an instance of the type can be copy-constructed from an lvalue expression.
[edit] Requirements
The type T satisfies CopyConstructible if
-  The type TsatisfiesMoveConstructible, and
Given
-  v, an lvalue expression of typeTorconst Tor an rvalue expression of typeconst T
-  u, an arbitrary identifier
The following expressions must be valid and have their specified effects
| Expression | Post-conditions | 
|---|---|
| T u = v; | The value of uis equivalent to the value ofv.The value of  | 
| T(v) | The value of T(v)is equivalent to the value ofv.The value of  | 
| The expression v.~T() also must be valid, and, for lvalue  | (until C++11) | 
[edit] Notes
Until C++11, classes that overloaded operator& were not CopyConstructible and thus weren't usable in the standard library containers. As of C++11, the standard library uses std::addressof whenever the address of an object is needed.
[edit] See also
| (C++11)(C++11)(C++11) | checks if a type has a copy constructor (class template) | 


