01-02-2017, 06:11 PM
Do these rules apply to class members?
If so, do they apply to instances of template class members?
The same question also applies to 0-1-4.
For 0-1-10 the situation is different, as class template member functions only get instantiated if they actually used. Thus C::call() is compliant with 0-1-10. A completely unused class template member function would be non-compliant with Rule 14-7-1.
If so, do they apply to instances of template class members?
Code:
template
class C {
T member1; // never used; compliant with 0-1-3?
T member2; // C::member2 is used but C::member2 is not; compliant with 0-1-3?
typedef T Unused; // typedef never used: non-compliant with 0-1-5.
typedef T X; // C::X is used but C::X is not; compliant with 0-1-5?
void call() { // only instantiated for C
use(static_cast(member2));
}
};
int main() {
C().call();
C();
}
The same question also applies to 0-1-4.
For 0-1-10 the situation is different, as class template member functions only get instantiated if they actually used. Thus C::call() is compliant with 0-1-10. A completely unused class template member function would be non-compliant with Rule 14-7-1.
<t></t>