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


ifdef::env-github,rspecator-view[]
'''
== Comments And Links
(visible only on this page)

include::comments-and-links.adoc[]
endif::env-github,rspecator-view[]
