How to Instantiate a Template Correctly

The type that a template takes as an argument must have external linkage. This means that you cannot instantiate a template with a locally-declared type:

 int main(){  struct S  {      int current_state;      char description[10];  } mystruct;  queue qs;   // 1. compilation error}

The line numbered 1 causes a compilation error because it attempts to instantiate a template with a locally-declared type, S. S has no linkage, and as such, it cannot serve as a valid template argument. To fix this, you should move the declaration of struct S outside of main():

 struct S{  //

Share the Post:
Share on facebook
Share on twitter
Share on linkedin


Recent Articles:

©2023 Copyright DevX - All Rights Reserved. Registration or use of this site constitutes acceptance of our Terms of Service and Privacy Policy.