Microsoft KB Archive/138752

= FIX: C4114 Warning When Using Templates and Const Keyword =

Article ID: 138752

Article Last Modified on 7/5/2005

-

APPLIES TO


 * Microsoft Visual C++ 5.0 Learning Edition
 * Microsoft Visual C++ 4.2 Enterprise Edition
 * Microsoft Visual C++ 4.1 Subscription
 * Microsoft Visual C++ 4.2 Professional Edition

-



This article was previously published under Q138752



SYMPTOMS
Using a class or function template may incorrectly generate a C4114 warning. The sample code in this article demonstrates a case where this occurs.



CAUSE
The compiler incorrectly expands the type of the function parameter to const T as it expands a template with type const T when the definition of a function or member function template has a parameter that takes a const T.

The Help file gives the following information for C4114:  Same type qualifier used more than once. A type qualifier (const, volatile, signed, or unsigned) was used more than once in the same type declaration or definition. The second occurrence of the qualifier was ignored. This is a warning when Microsoft extensions are enabled (/Ze) and an error when extensions are disabled (/Za). The following is an example of this warning:

  volatile volatile int i;   // warning





RESOLUTION
This warning can be safely ignored. To disable all occurrences of this warning, use the #pragma warning preprocessor directive. The Help file demonstrates how to use this pragma.



STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This bug was corrected in Visual C++ version 5.0.



Sample Code to Reproduce Problem
// test.cpp // Compile options needed - none template   struct f   { void goo( const T & r){ T t=r;}; };

void main {      f h;

// the following line of code causes // goo( const const int ) to be expanded h.goo( 2 ); }

Additional query words: kbVC400bug 2.00 2.10 2.20 9.00 9.10 10.00 10.10 10.20

Keywords: kbbug kbfix kbvc500fix kbcpponly kbcompiler KB138752

-

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

© Microsoft Corporation. All rights reserved.