PRB: Ambiguous Msg If Function Template Return Type Omitted (143081)



The information in this article applies to:

  • Microsoft Visual C++, 32-bit Professional Edition 4.0
  • Microsoft Visual C++, 32-bit Learning Edition 4.0

This article was previously published under Q143081

SYMPTOMS

Given a function template, if the return type is omitted, the error that results is a syntax error on the semicolon preceding the closing brace of the function.
minmax.cpp(4) : error C2059: syntax error : ';'

RESOLUTION

Specify a return type for the function template.

STATUS

This behavior is by design.

MORE INFORMATION

In C++, it is an error for a function to be declared without a return type. This is in compliance with the proposed ANSI C++ specification (ref. ARM, section 7.1.1).

Sample Code

    /* Compile options needed: /c */ 

   // This Min is in error (no return type is specified)
   template <class X> Min (X &t1, X &t2) {
      if (t1<t2) return t1;
      return t2;
   } //the error message appears for this line

   //This Min is correct
   template <class X> X& Min (X &t1, X &t2) {
      if (t1<t2) return t1;
      return t2;
   }
				

Modification Type:MinorLast Reviewed:7/5/2005
Keywords:kbCompiler kbCPPonly kbprb KB143081