rspec/rules/S1030/rule.adoc
2021-01-26 14:30:57 +01:00

36 lines
673 B
Plaintext

An implicit template specialization does not instantiate every member of the template. Where instantiation of a member would result in an ill-formed program it is not clear that the template should be used with the supplied template-arguments.
== Noncompliant Code Example
----
template <typename T>
class A
{
public:
void f1 ()
{
// ...
}
void f2 ()
{
T t;
t.x = 0; // Will only work for types that have a .x member
}
};
void b ()
{
A<int32_t> a; // A<int32_t>::f2 is not instantiated.
a.f1 ();
}
template class A<int32_t>; // Noncompliant, instantiation of f2 results in "ill-formed" program.
----
== See
* MISRA {cpp}:2008, 14-7-2