FIX: C4114 Warning When Using Templates and Const Keyword (138752)
The information in this article applies to:
- Microsoft Visual C++, 32-bit Learning Edition 4.2
- Microsoft Visual C++, 32-bit Enterprise Edition 4.2
- Microsoft Visual C++, 32-bit Professional Edition 4.1
- Microsoft Visual C++, 32-bit Professional Edition 4.2
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.
Modification Type: | Minor | Last Reviewed: | 7/5/2005 |
---|
Keywords: | kbbug kbCompiler kbCPPonly kbfix kbVC500fix KB138752 |
---|
|