[
Example 1: 
template<class T> class Array {
  T* v;
  int sz;
public:
  explicit Array(int);
  T& operator[](int);
  T& elem(int i) { return v[i]; }
};
declares three member functions of a class template
.The subscript function can be defined like this:
template<class T> T& Array<T>::operator[](int i) {
  if (i<0 || sz<=i) error("Array: range error");
  return v[i];
}
A constrained member function can be defined out of line:
template<typename T> concept C = requires {
  typename T::type;
};
template<typename T> struct S {
  void f() requires C<T>;
  void g() requires C<T>;
};
template<typename T>
  void S<T>::f() requires C<T> { }      
template<typename T>
  void S<T>::g() { }                    
 — 
end example]