FIX: Incorrect Template Declaration Causes Compiler Hang (121015)



The information in this article applies to:

  • Microsoft Visual C++, 32-bit Professional Edition 2.0

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)
{
}
				

Modification Type:MinorLast Reviewed:7/5/2005
Keywords:kbbug kbcode kbCompiler kbCPPonly kbfix KB121015