Knowledge Base

FIX: Incorrect Template Declaration Causes Compiler Hang

Article ID: 121015

Article Last Modified on 7/5/2005


APPLIES TO


This article was previously published under Q121015

SYMPTOMS

The compiler may hang (stop processing) when compiling a template that includes a syntax error in the function declaration as shown in the samples in this article.

RESOLUTION

Press CTRL+BREAK to stop the build process and return the focus to Visual C++. Correcting the syntax error will allow the code to compile.

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 samples can be used to reproduce the problem:

Sample Code 1

/* Compile options needed: none
*/ 

template <class T>

T max(T a, T b>    // Note: ">" on right should be a ")"

    {
    return a;
    }

void main () {}
				

Sample Code 2

/* Compile options needed: none
*/ 

template<class TYPE, class ARG_TYPE>
class CList
{
public:
    TYPE* GetHead (void);
};

// 
//   SYNTAX ERROR: "TYPE(" instead of "TYPE*"
// 
template<class TYPE, class ARG_TYPE>
inline TYPE( CList<TYPE, ARG_TYPE>::GetHead (void)
{
}
				

Additional query words: 2.00 9.00 hang lock-up freeze

Keywords: kbbug kbfix kbcpponly kbcode kbcompiler KB121015