FIX: C4114 Warning When Using Templates and Const KeywordLast reviewed: September 18, 1997Article ID: Q138752 |
The information in this article applies to:
SYMPTOMSUsing a class or function template may incorrectly generate a C4114 warning. The sample code in this article demonstrates a case where this occurs.
CAUSEThe 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:
RESOLUTIONThis 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.
STATUSMicrosoft 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.
MORE INFORMATION
Sample Code to Reproduce Problem
// test.cpp // Compile options needed - none template <class T> struct f { void goo( const T & r){ T t=r;}; }; void main() { f<const int> h; // the following line of code causes // goo( const const int ) to be expanded h.goo( 2 ); } |
Additional query words: 2.00 2.10 2.20 9.00 9.10 10.00 10.10 10.20
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |