Microsoft KB Archive/128788

= BUG: C2143 When Initializing Static Member in Class Template =

Article ID: 128788

Article Last Modified on 10/2/2003

-

APPLIES TO


 * Microsoft Visual C++ 2.0 Professional Edition
 * Microsoft Visual C++ 2.1

-



This article was previously published under Q128788



SYMPTOMS
When initializing a static data member that has a user-defined type in a class template, the compiler generates the following error message on the line after the last line of code:

Error C2143: syntax error : missing ';' before 'newline'



RESOLUTION
To work around the problem, specify a specialized instance for particular data types when initializing the static data member -- as in the "Sample Code" section in this article.



STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This problem was corrected in Microsoft Visual C++, 32-bit Edition, version 4.0.



MORE INFORMATION
The following code can be used to reproduce the problem and work around the problem.

Sample Code
/* Compile options needed: /c

typedef struct { int element; } MyType;

template  class AA { public: static MyType m_mytype; };

template  MyType AA::m_mytype = {0};

// Uncomment the following line to work around the problem. // MyType AA ::m_mytype = {0};

AA mydouble;

MyType mytype = mydouble.m_mytype;

Additional query words: 2.00 2.10 9.0 9.00 9.1 9.10

Keywords: kbbug kbcpponly kbcompiler KB128788

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.