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.
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