Files
2025-10-25 03:02:53 +03:00

2.2 KiB
Raw Permalink Blame History

[temp.mem.func]

13 Templates [temp]

13.7 Template declarations [temp.decls]

13.7.2 Class templates [temp.class]

13.7.2.2 Member functions of class templates [temp.mem.func]

1

#

A member function of a class template may be defined outside of the class template definition in which it is declared.

[Example 1: template class Array { T* v; int sz;public:explicit Array(int); T& operator; T& elem(int i) { return v[i]; }};

declares three member functions of a class template.

The subscript function can be defined like this:template T& Array::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 concept C = requires {typename T::type;};

template struct S {void f() requires C; void g() requires C;};

templatevoid S::f() requires C { } // OKtemplatevoid S::g() { } // error: no matching function in S

— end example]

2

#

Thetemplate-arguments for a member function of a class template are determined by thetemplate-arguments of the type of the object for which the member function is called.

[Example 2:

Thetemplate-argument forArray::operator[] will be determined by theArray to which the subscripting operation is applied.

Array v1(20); Array v2(30);

v1[3] = 7; // Array::operator[] v2[3] = dcomplex(7,8); // Array::operator[] — end example]