## BUG: C2059 When Memory Model Used with Conversion Function

Q103789

    7.00   | 1.00 1.50
    MS-DOS | WINDOWS
    kbtool kbbuglist

    ----------------------------------------------------------------------
    The information in this article applies to:

     - The Microsoft C/C++ Compiler (CL.EXE), included with:

        - Microsoft C/C++ for MS-DOS, versions 7.0
        - Microsoft Visual C++ for Windows, versions 1.0 and 1.5
    ----------------------------------------------------------------------

    SYMPTOMS
    ========

    The Microsoft C/C++ Compiler versions 7.0, 8.0, and 8.0c incorrectly
    generates errors when a memory model specifier is used in the return
    type of a user-defined conversion function. For example, the compiler
    generates the following errors with the sample code provided below:

       file.cpp(8) : error C2059: syntax error : '*'
       file.cpp(8) : error C2238: unexpected token[s] preceding ';'

    RESOLUTION
    ==========

    Create a typedef for the conversion type and use the typedef in the
    conversion function definition. For example:

       typedef const char __far* NEWTYPE;

       operator NEWTYPE () const;

    STATUS
    ======

    Microsoft has confirmed this to be a bug in the products listed above. We
    are researching this problem and will post new information here in the
    Microsoft Knowledge Base as it becomes available.

    MORE INFORMATION
    ================

    Sample Code
    -----------

    //  Compile options needed: /c

    class ClassName {

    public:
         operator const char __far* () const;
    };

    Additional reference words: 1.00 1.50 7.00 8.00 8.00c
    KBCategory: kbtool kbbuglist
    KBSubcategory: CPPIss

Keywords : kb16bitonly
Issue type : kbbug
Technology : kbVCsearch kbAudDeveloper kbCVCComp

Last Reviewed: May 5, 2001 © 2001 Microsoft Corporation. All rights reserved. Terms of Use.