473,386 Members | 1,795 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,386 software developers and data experts.

parser stack overflow, program too complex eroor C1026

Apparently there is a limit to how complex a single header file with a huge
class definition in it can be. The source to one of my header files is at a
point that it compiles and runs fine, until I add one more line to it, and I
then get this compiler error:

fatal error C1026: parser stack overflow, program too complex
This diagnostic occurred in the compiler generated function 'void
My_Class::Dispose(bool)'

Has this happened to anyone else? Is there a way to increase the 'parser
stack'? Is this a bug, or is there a limit to complexity for a single class
and/or header file?

[==P==]
Dec 20 '05 #1
18 2123
Peteroid wrote:
Apparently there is a limit to how complex a single header file with
a huge class definition in it can be. The source to one of my header
files is at a point that it compiles and runs fine, until I add one
more line to it, and I then get this compiler error:

fatal error C1026: parser stack overflow, program too complex
This diagnostic occurred in the compiler generated function 'void
My_Class::Dispose(bool)'

Has this happened to anyone else? Is there a way to increase the
'parser stack'? Is this a bug, or is there a limit to complexity for
a single class and/or header file?


AFIAK, there's no way to increase the limit, but I've never heard of anyone
hitting this limit before.

Is this a large class written entirely inline?

-cd
Dec 20 '05 #2
Peteroid wrote:
Yes, it is entirely in-line. But I've reduced it down to a pretty
small source file that independently causes problem attached (see
instructions at top of source file in commented NOTE)...


That's a pretty small repro alright! You might want to contact PSS, or at
the very least open a bug report at
http://lab.msdn.microsoft.com/productfeedback

-cd
Dec 20 '05 #3
Already have bug reported it! hehe

Note the NEWER upload, even leaner, absolutely symbolic (my other other
post)... :)

[==P==]

"Carl Daniel [VC++ MVP]" <cp*****************************@mvps.org.nospam >
wrote in message news:eC**************@TK2MSFTNGP14.phx.gbl...
Peteroid wrote:
Yes, it is entirely in-line. But I've reduced it down to a pretty
small source file that independently causes problem attached (see
instructions at top of source file in commented NOTE)...


That's a pretty small repro alright! You might want to contact PSS, or at
the very least open a bug report at
http://lab.msdn.microsoft.com/productfeedback

-cd

Dec 20 '05 #4
Here is bug report I filed:

http://lab.msdn.microsoft.com/Produc...0-44bd02f398c6

[==P==]

"Carl Daniel [VC++ MVP]" <cp*****************************@mvps.org.nospam >
wrote in message news:eC**************@TK2MSFTNGP14.phx.gbl...
Peteroid wrote:
Yes, it is entirely in-line. But I've reduced it down to a pretty
small source file that independently causes problem attached (see
instructions at top of source file in commented NOTE)...


That's a pretty small repro alright! You might want to contact PSS, or at
the very least open a bug report at
http://lab.msdn.microsoft.com/productfeedback

-cd

Dec 20 '05 #5
Hi Perteroid,
I changed
OAP_Branch m_Root ;
to
OAP_Branch^ m_Root ;

Compiler accecpted your code.

And another way is to change
ref class OAP_Branch
to
value class OAP_Branch

Hope this helps.
--
Vince

Dec 20 '05 #6
Vince,

Thanks for the reply!

The class file in question isn't one with a value class. I removed all the
code and got the class file down to one that generates the problem. The
original class file has over 2300 lines in it!

Also, I don't want to use pointers, I want to use stack semantics. And it
works for stack semantics up to a point, but add one more line, and the
compiler generates an error it shouldn't.

In other words, this isn't me trying to get my code to work, this is me
pointing out a compiler bug! : )

[==P==]

"Vince Yuan" <sh*******@citiz.net> wrote in message
news:O2*************@tk2msftngp13.phx.gbl...
Hi Perteroid,
I changed
OAP_Branch m_Root ;
to
OAP_Branch^ m_Root ;

Compiler accecpted your code.

And another way is to change
ref class OAP_Branch
to
value class OAP_Branch

Hope this helps.
--
Vince

Dec 20 '05 #7
Hi Vince,

However, you present a way I might be able to keep working. I could change
my members to pointers, and if that allows it to compile, then I can keep
working! So thanks again!

[==P==]

"Vince Yuan" <sh*******@citiz.net> wrote in message
news:O2*************@tk2msftngp13.phx.gbl...
Hi Perteroid,
I changed
OAP_Branch m_Root ;
to
OAP_Branch^ m_Root ;

Compiler accecpted your code.

And another way is to change
ref class OAP_Branch
to
value class OAP_Branch

Hope this helps.
--
Vince

Dec 20 '05 #8
This version is probably as close to as minimal a source file that can be
that causes error c1026:

//-----------------------------
#pragma once
//
// NOTE: At bottom are two source lines for m_XXX, and m_YYY. if you comment
them both
// out this will compile. If you un-comment one you get first level error,
un-comment
// both you get a second level error (you'll see).
//
// WORKAROUND: Change enough stack semantic members to pointers.
// [courtesy of Vince Yuan]
//

ref class My_Class_A
{
public:
My_Class_A() {}
~My_Class_A() {}
} ;

ref class My_Class_B
{
public:

My_Class_B() {}
~My_Class_B() {}

My_Class_A m_Root ;
My_Class_A m_Inunt ;
My_Class_A m_0_Is ;
My_Class_A m_1_Is ;
My_Class_A m_2_Is ;
My_Class_A m_L_NT ;
My_Class_A m_L_NP ;
My_Class_A m_L_AD ;
My_Class_A m_L_O ;
My_Class_A m_3_Is ;
My_Class_A m_N_Is ;
My_Class_A m_Ount ;
My_Class_A m_0_Os ;
My_Class_A m_1_Os ;
My_Class_A m_2_Os ;
My_Class_A m_3_Os ;
My_Class_A m_N_Os ;
My_Class_A m_Loc ;
My_Class_A m_Ariic ;
My_Class_A m_y ;
My_Class_A m_pason ;
My_Class_A m_stt ;
My_Class_A m_veion ;
My_Class_A m_utode ;
My_Class_A m_puNode ;
My_Class_A m_Ma ;
My_Class_A m_Vaable ;
My_Class_A m_Spial ;
My_Class_A m_L_NND ;
My_Class_A m_L_NR ;
My_Class_A m_L_EU ;
My_Class_A m_C_int ;
My_Class_A m_C_long ;
My_Class_A m_C_float ;
My_Class_A m_C_double ;
My_Class_A m_C_ZO_float ;
My_Class_A m_C_ZO_double ;
My_Class_A m_C_ZO_char ;
My_Class_A m_C_ZO_string ;
My_Class_A m_L_NT_EQU ;
My_Class_A m_L_LFT ;
My_Class_A m_L_RGHT ;
My_Class_A m_L_NT_LEFT ;
My_Class_A m_L_NT_RHT ;
My_Class_A m_L_TUE ;
My_Class_A m_L_FLSE ;
My_Class_A m_L_IPIES ;
My_Class_A m_L_NT_IIS ;
My_Class_A m_L_IPED_BY ;
My_Class_A m_L_NT_IMED_BY ;
My_Class_A m_C_bool ;
My_Class_A m_C_bool_TRUE ;
My_Class_A m_C_bool_FALSE ;
My_Class_A m_C_OE ;
My_Class_A m_C_OE_int ;
My_Class_A m_O_long ;
My_Class_A m_O_float ;
My_Class_A m_O_double ;
My_Class_A m_O_char ;
My_Class_A m_O_string ;
My_Class_A m_O_uni ;
My_Class_A m_C_OE_long ;
My_Class_A m_C_OE_float ;
My_Class_A m_C_OE_double ;
My_Class_A m_C_OE_char ;
My_Class_A m_C_OE_string ;
My_Class_A m_O_bool ;
My_Class_A m_O_int ;
My_Class_A m_C_char ;
My_Class_A m_C_string ;
My_Class_A m_C_PI ;
My_Class_A m_C_ZO ;
My_Class_A m_C_ZO_int ;
My_Class_A m_C_ZO_long ;
My_Class_A m_Sp_DATE ;
My_Class_A m_Sp_TIME ;
My_Class_A m__DD ;
My_Class_A m__DD_int ;
My_Class_A m__DD_long ;
My_Class_A m__DD_float ;
My_Class_A m__ULT_float ;
My_Class_A m__ES_TN_double ;
My_Class_A m__ES_OR_ELS ;
My_Class_A m__ES_OR_ELS_int ;
My_Class_A m__ULT_long ;
My_Class_A m__ES_OR_ELS_float ;
My_Class_A m__ES_OR_ELS_double ;
My_Class_A m__RE_TN ;
My_Class_A m__RE_TN_int ;
My_Class_A m__ULT_double ;
My_Class_A m__ES_TN ;
My_Class_A m__ES_TN_int ;
My_Class_A m__ES_TN_long ;
My_Class_A m__UB_int ;
My_Class_A m__RE_TN_float ;
My_Class_A m__UAS_int ;
My_Class_A m__UAS_long ;
My_Class_A m__UAS_float ;
My_Class_A m__ES_TN_float ;
My_Class_A m__RE_TN_long ;
My_Class_A m__UAS_double ;
My_Class_A m__OT_ELS ;
My_Class_A m__OT_ELS_int ;
My_Class_A m__OT_ELS_long ;
My_Class_A m__OT_ELS_float ;
My_Class_A m__RE_TN_double ;
My_Class_A m__RE_OR_EALS ;
My_Class_A m__RE_OR_EALS_int ;
My_Class_A m__ES_OR_ELS_long ;
My_Class_A m__DD_double ;
My_Class_A m__DD_string ;
My_Class_A m__UB ;
My_Class_A m__UB_long ;
My_Class_A m__UB_float ;
My_Class_A m__UB_double ;
My_Class_A m__ULT ;
My_Class_A m__ULT_int ;
My_Class_A m__RE_OR_EALS_long ;
My_Class_A m__RE_OR_EALS_float ;
My_Class_A m__RE_OR_EALS_double ;
My_Class_A m__UAS ;
My_Class_A m__OT_ELS_double ;
My_Class_A m__IV ;
My_Class_A m__Izas ;

My_Class_A m_XXX ; /// add one to cause first level problem
****************************
My_Class_A m_YYY ; /// add both to cause second level problem
****************************
} ;
//----------------------------------------------
//----------------------------------------------

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:uC**************@TK2MSFTNGP11.phx.gbl...
Hi Vince,

However, you present a way I might be able to keep working. I could change
my members to pointers, and if that allows it to compile, then I can keep
working! So thanks again!

[==P==]

"Vince Yuan" <sh*******@citiz.net> wrote in message
news:O2*************@tk2msftngp13.phx.gbl...
Hi Perteroid,
I changed
OAP_Branch m_Root ;
to
OAP_Branch^ m_Root ;

Compiler accecpted your code.

And another way is to change
ref class OAP_Branch
to
value class OAP_Branch

Hope this helps.
--
Vince


Dec 20 '05 #9
I have experimented with using more than one type of member to the
'offending' class. As such, I've reached this conclusion:

You cannot have more than 124 (user-defined?) stack semantic members, even
of mixed types, at the same time in one class.

I don't know if this applies only to 'ref' classes, or whether the fact I'm
using clr:/pure syntax is a factor. I have been able to re-create the
problem with deterministic 100% 'success' in both VS C++.NET Express 2005
and VS C++.NET 2005 PRO.

[==P==]

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:u%****************@TK2MSFTNGP12.phx.gbl...
This version is probably as close to as minimal a source file that can be
that causes error c1026:

//-----------------------------
#pragma once
//
// NOTE: At bottom are two source lines for m_XXX, and m_YYY. if you
comment them both
// out this will compile. If you un-comment one you get first level error,
un-comment
// both you get a second level error (you'll see).
//
// WORKAROUND: Change enough stack semantic members to pointers.
// [courtesy of Vince Yuan]
//

ref class My_Class_A
{
public:
My_Class_A() {}
~My_Class_A() {}
} ;

ref class My_Class_B
{
public:

My_Class_B() {}
~My_Class_B() {}

My_Class_A m_Root ;
My_Class_A m_Inunt ;
My_Class_A m_0_Is ;
My_Class_A m_1_Is ;
My_Class_A m_2_Is ;
My_Class_A m_L_NT ;
My_Class_A m_L_NP ;
My_Class_A m_L_AD ;
My_Class_A m_L_O ;
My_Class_A m_3_Is ;
My_Class_A m_N_Is ;
My_Class_A m_Ount ;
My_Class_A m_0_Os ;
My_Class_A m_1_Os ;
My_Class_A m_2_Os ;
My_Class_A m_3_Os ;
My_Class_A m_N_Os ;
My_Class_A m_Loc ;
My_Class_A m_Ariic ;
My_Class_A m_y ;
My_Class_A m_pason ;
My_Class_A m_stt ;
My_Class_A m_veion ;
My_Class_A m_utode ;
My_Class_A m_puNode ;
My_Class_A m_Ma ;
My_Class_A m_Vaable ;
My_Class_A m_Spial ;
My_Class_A m_L_NND ;
My_Class_A m_L_NR ;
My_Class_A m_L_EU ;
My_Class_A m_C_int ;
My_Class_A m_C_long ;
My_Class_A m_C_float ;
My_Class_A m_C_double ;
My_Class_A m_C_ZO_float ;
My_Class_A m_C_ZO_double ;
My_Class_A m_C_ZO_char ;
My_Class_A m_C_ZO_string ;
My_Class_A m_L_NT_EQU ;
My_Class_A m_L_LFT ;
My_Class_A m_L_RGHT ;
My_Class_A m_L_NT_LEFT ;
My_Class_A m_L_NT_RHT ;
My_Class_A m_L_TUE ;
My_Class_A m_L_FLSE ;
My_Class_A m_L_IPIES ;
My_Class_A m_L_NT_IIS ;
My_Class_A m_L_IPED_BY ;
My_Class_A m_L_NT_IMED_BY ;
My_Class_A m_C_bool ;
My_Class_A m_C_bool_TRUE ;
My_Class_A m_C_bool_FALSE ;
My_Class_A m_C_OE ;
My_Class_A m_C_OE_int ;
My_Class_A m_O_long ;
My_Class_A m_O_float ;
My_Class_A m_O_double ;
My_Class_A m_O_char ;
My_Class_A m_O_string ;
My_Class_A m_O_uni ;
My_Class_A m_C_OE_long ;
My_Class_A m_C_OE_float ;
My_Class_A m_C_OE_double ;
My_Class_A m_C_OE_char ;
My_Class_A m_C_OE_string ;
My_Class_A m_O_bool ;
My_Class_A m_O_int ;
My_Class_A m_C_char ;
My_Class_A m_C_string ;
My_Class_A m_C_PI ;
My_Class_A m_C_ZO ;
My_Class_A m_C_ZO_int ;
My_Class_A m_C_ZO_long ;
My_Class_A m_Sp_DATE ;
My_Class_A m_Sp_TIME ;
My_Class_A m__DD ;
My_Class_A m__DD_int ;
My_Class_A m__DD_long ;
My_Class_A m__DD_float ;
My_Class_A m__ULT_float ;
My_Class_A m__ES_TN_double ;
My_Class_A m__ES_OR_ELS ;
My_Class_A m__ES_OR_ELS_int ;
My_Class_A m__ULT_long ;
My_Class_A m__ES_OR_ELS_float ;
My_Class_A m__ES_OR_ELS_double ;
My_Class_A m__RE_TN ;
My_Class_A m__RE_TN_int ;
My_Class_A m__ULT_double ;
My_Class_A m__ES_TN ;
My_Class_A m__ES_TN_int ;
My_Class_A m__ES_TN_long ;
My_Class_A m__UB_int ;
My_Class_A m__RE_TN_float ;
My_Class_A m__UAS_int ;
My_Class_A m__UAS_long ;
My_Class_A m__UAS_float ;
My_Class_A m__ES_TN_float ;
My_Class_A m__RE_TN_long ;
My_Class_A m__UAS_double ;
My_Class_A m__OT_ELS ;
My_Class_A m__OT_ELS_int ;
My_Class_A m__OT_ELS_long ;
My_Class_A m__OT_ELS_float ;
My_Class_A m__RE_TN_double ;
My_Class_A m__RE_OR_EALS ;
My_Class_A m__RE_OR_EALS_int ;
My_Class_A m__ES_OR_ELS_long ;
My_Class_A m__DD_double ;
My_Class_A m__DD_string ;
My_Class_A m__UB ;
My_Class_A m__UB_long ;
My_Class_A m__UB_float ;
My_Class_A m__UB_double ;
My_Class_A m__ULT ;
My_Class_A m__ULT_int ;
My_Class_A m__RE_OR_EALS_long ;
My_Class_A m__RE_OR_EALS_float ;
My_Class_A m__RE_OR_EALS_double ;
My_Class_A m__UAS ;
My_Class_A m__OT_ELS_double ;
My_Class_A m__IV ;
My_Class_A m__Izas ;

My_Class_A m_XXX ; /// add one to cause first level problem
****************************
My_Class_A m_YYY ; /// add both to cause second level problem
****************************
} ;
//----------------------------------------------
//----------------------------------------------

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:uC**************@TK2MSFTNGP11.phx.gbl...
Hi Vince,

However, you present a way I might be able to keep working. I could
change my members to pointers, and if that allows it to compile, then I
can keep working! So thanks again!

[==P==]

"Vince Yuan" <sh*******@citiz.net> wrote in message
news:O2*************@tk2msftngp13.phx.gbl...
Hi Perteroid,
I changed
OAP_Branch m_Root ;
to
OAP_Branch^ m_Root ;

Compiler accecpted your code.

And another way is to change
ref class OAP_Branch
to
value class OAP_Branch

Hope this helps.
--
Vince



Dec 20 '05 #10
I don't thing it's due to the number of members, IMO the code
parser/generator has problems with the destructor (Dispose pattern), remove
the destructor and the problem goes away (tried with 240 members).

Willy.

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:%2****************@TK2MSFTNGP09.phx.gbl...
I have experimented with using more than one type of member to the
'offending' class. As such, I've reached this conclusion:

You cannot have more than 124 (user-defined?) stack semantic members, even
of mixed types, at the same time in one class.

I don't know if this applies only to 'ref' classes, or whether the fact
I'm using clr:/pure syntax is a factor. I have been able to re-create the
problem with deterministic 100% 'success' in both VS C++.NET Express 2005
and VS C++.NET 2005 PRO.

[==P==]

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:u%****************@TK2MSFTNGP12.phx.gbl...
This version is probably as close to as minimal a source file that can be
that causes error c1026:

//-----------------------------
#pragma once
//
// NOTE: At bottom are two source lines for m_XXX, and m_YYY. if you
comment them both
// out this will compile. If you un-comment one you get first level
error, un-comment
// both you get a second level error (you'll see).
//
// WORKAROUND: Change enough stack semantic members to pointers.
// [courtesy of Vince Yuan]
//

ref class My_Class_A
{
public:
My_Class_A() {}
~My_Class_A() {}
} ;

ref class My_Class_B
{
public:

My_Class_B() {}
~My_Class_B() {}

My_Class_A m_Root ;
My_Class_A m_Inunt ;
My_Class_A m_0_Is ;
My_Class_A m_1_Is ;
My_Class_A m_2_Is ;
My_Class_A m_L_NT ;
My_Class_A m_L_NP ;
My_Class_A m_L_AD ;
My_Class_A m_L_O ;
My_Class_A m_3_Is ;
My_Class_A m_N_Is ;
My_Class_A m_Ount ;
My_Class_A m_0_Os ;
My_Class_A m_1_Os ;
My_Class_A m_2_Os ;
My_Class_A m_3_Os ;
My_Class_A m_N_Os ;
My_Class_A m_Loc ;
My_Class_A m_Ariic ;
My_Class_A m_y ;
My_Class_A m_pason ;
My_Class_A m_stt ;
My_Class_A m_veion ;
My_Class_A m_utode ;
My_Class_A m_puNode ;
My_Class_A m_Ma ;
My_Class_A m_Vaable ;
My_Class_A m_Spial ;
My_Class_A m_L_NND ;
My_Class_A m_L_NR ;
My_Class_A m_L_EU ;
My_Class_A m_C_int ;
My_Class_A m_C_long ;
My_Class_A m_C_float ;
My_Class_A m_C_double ;
My_Class_A m_C_ZO_float ;
My_Class_A m_C_ZO_double ;
My_Class_A m_C_ZO_char ;
My_Class_A m_C_ZO_string ;
My_Class_A m_L_NT_EQU ;
My_Class_A m_L_LFT ;
My_Class_A m_L_RGHT ;
My_Class_A m_L_NT_LEFT ;
My_Class_A m_L_NT_RHT ;
My_Class_A m_L_TUE ;
My_Class_A m_L_FLSE ;
My_Class_A m_L_IPIES ;
My_Class_A m_L_NT_IIS ;
My_Class_A m_L_IPED_BY ;
My_Class_A m_L_NT_IMED_BY ;
My_Class_A m_C_bool ;
My_Class_A m_C_bool_TRUE ;
My_Class_A m_C_bool_FALSE ;
My_Class_A m_C_OE ;
My_Class_A m_C_OE_int ;
My_Class_A m_O_long ;
My_Class_A m_O_float ;
My_Class_A m_O_double ;
My_Class_A m_O_char ;
My_Class_A m_O_string ;
My_Class_A m_O_uni ;
My_Class_A m_C_OE_long ;
My_Class_A m_C_OE_float ;
My_Class_A m_C_OE_double ;
My_Class_A m_C_OE_char ;
My_Class_A m_C_OE_string ;
My_Class_A m_O_bool ;
My_Class_A m_O_int ;
My_Class_A m_C_char ;
My_Class_A m_C_string ;
My_Class_A m_C_PI ;
My_Class_A m_C_ZO ;
My_Class_A m_C_ZO_int ;
My_Class_A m_C_ZO_long ;
My_Class_A m_Sp_DATE ;
My_Class_A m_Sp_TIME ;
My_Class_A m__DD ;
My_Class_A m__DD_int ;
My_Class_A m__DD_long ;
My_Class_A m__DD_float ;
My_Class_A m__ULT_float ;
My_Class_A m__ES_TN_double ;
My_Class_A m__ES_OR_ELS ;
My_Class_A m__ES_OR_ELS_int ;
My_Class_A m__ULT_long ;
My_Class_A m__ES_OR_ELS_float ;
My_Class_A m__ES_OR_ELS_double ;
My_Class_A m__RE_TN ;
My_Class_A m__RE_TN_int ;
My_Class_A m__ULT_double ;
My_Class_A m__ES_TN ;
My_Class_A m__ES_TN_int ;
My_Class_A m__ES_TN_long ;
My_Class_A m__UB_int ;
My_Class_A m__RE_TN_float ;
My_Class_A m__UAS_int ;
My_Class_A m__UAS_long ;
My_Class_A m__UAS_float ;
My_Class_A m__ES_TN_float ;
My_Class_A m__RE_TN_long ;
My_Class_A m__UAS_double ;
My_Class_A m__OT_ELS ;
My_Class_A m__OT_ELS_int ;
My_Class_A m__OT_ELS_long ;
My_Class_A m__OT_ELS_float ;
My_Class_A m__RE_TN_double ;
My_Class_A m__RE_OR_EALS ;
My_Class_A m__RE_OR_EALS_int ;
My_Class_A m__ES_OR_ELS_long ;
My_Class_A m__DD_double ;
My_Class_A m__DD_string ;
My_Class_A m__UB ;
My_Class_A m__UB_long ;
My_Class_A m__UB_float ;
My_Class_A m__UB_double ;
My_Class_A m__ULT ;
My_Class_A m__ULT_int ;
My_Class_A m__RE_OR_EALS_long ;
My_Class_A m__RE_OR_EALS_float ;
My_Class_A m__RE_OR_EALS_double ;
My_Class_A m__UAS ;
My_Class_A m__OT_ELS_double ;
My_Class_A m__IV ;
My_Class_A m__Izas ;

My_Class_A m_XXX ; /// add one to cause first level problem
****************************
My_Class_A m_YYY ; /// add both to cause second level problem
****************************
} ;
//----------------------------------------------
//----------------------------------------------

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:uC**************@TK2MSFTNGP11.phx.gbl...
Hi Vince,

However, you present a way I might be able to keep working. I could
change my members to pointers, and if that allows it to compile, then I
can keep working! So thanks again!

[==P==]

"Vince Yuan" <sh*******@citiz.net> wrote in message
news:O2*************@tk2msftngp13.phx.gbl...
Hi Perteroid,
I changed
OAP_Branch m_Root ;
to
OAP_Branch^ m_Root ;

Compiler accecpted your code.

And another way is to change
ref class OAP_Branch
to
value class OAP_Branch

Hope this helps.
--
Vince




Dec 20 '05 #11
Willy,

Cool! I never ever create a class without a destructor. But my destructor is
code-less, so I guess it's ok to remove it based on what you said!!! Thanks!

[==P==]

"Willy Denoyette [MVP]" <wi*************@telenet.be> wrote in message
news:uI**************@TK2MSFTNGP14.phx.gbl...
I don't thing it's due to the number of members, IMO the code
parser/generator has problems with the destructor (Dispose pattern), remove
the destructor and the problem goes away (tried with 240 members).

Willy.

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:%2****************@TK2MSFTNGP09.phx.gbl...
I have experimented with using more than one type of member to the
'offending' class. As such, I've reached this conclusion:

You cannot have more than 124 (user-defined?) stack semantic members,
even of mixed types, at the same time in one class.

I don't know if this applies only to 'ref' classes, or whether the fact
I'm using clr:/pure syntax is a factor. I have been able to re-create the
problem with deterministic 100% 'success' in both VS C++.NET Express 2005
and VS C++.NET 2005 PRO.

[==P==]

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:u%****************@TK2MSFTNGP12.phx.gbl...
This version is probably as close to as minimal a source file that can
be that causes error c1026:

//-----------------------------
#pragma once
//
// NOTE: At bottom are two source lines for m_XXX, and m_YYY. if you
comment them both
// out this will compile. If you un-comment one you get first level
error, un-comment
// both you get a second level error (you'll see).
//
// WORKAROUND: Change enough stack semantic members to pointers.
// [courtesy of Vince Yuan]
//

ref class My_Class_A
{
public:
My_Class_A() {}
~My_Class_A() {}
} ;

ref class My_Class_B
{
public:

My_Class_B() {}
~My_Class_B() {}

My_Class_A m_Root ;
My_Class_A m_Inunt ;
My_Class_A m_0_Is ;
My_Class_A m_1_Is ;
My_Class_A m_2_Is ;
My_Class_A m_L_NT ;
My_Class_A m_L_NP ;
My_Class_A m_L_AD ;
My_Class_A m_L_O ;
My_Class_A m_3_Is ;
My_Class_A m_N_Is ;
My_Class_A m_Ount ;
My_Class_A m_0_Os ;
My_Class_A m_1_Os ;
My_Class_A m_2_Os ;
My_Class_A m_3_Os ;
My_Class_A m_N_Os ;
My_Class_A m_Loc ;
My_Class_A m_Ariic ;
My_Class_A m_y ;
My_Class_A m_pason ;
My_Class_A m_stt ;
My_Class_A m_veion ;
My_Class_A m_utode ;
My_Class_A m_puNode ;
My_Class_A m_Ma ;
My_Class_A m_Vaable ;
My_Class_A m_Spial ;
My_Class_A m_L_NND ;
My_Class_A m_L_NR ;
My_Class_A m_L_EU ;
My_Class_A m_C_int ;
My_Class_A m_C_long ;
My_Class_A m_C_float ;
My_Class_A m_C_double ;
My_Class_A m_C_ZO_float ;
My_Class_A m_C_ZO_double ;
My_Class_A m_C_ZO_char ;
My_Class_A m_C_ZO_string ;
My_Class_A m_L_NT_EQU ;
My_Class_A m_L_LFT ;
My_Class_A m_L_RGHT ;
My_Class_A m_L_NT_LEFT ;
My_Class_A m_L_NT_RHT ;
My_Class_A m_L_TUE ;
My_Class_A m_L_FLSE ;
My_Class_A m_L_IPIES ;
My_Class_A m_L_NT_IIS ;
My_Class_A m_L_IPED_BY ;
My_Class_A m_L_NT_IMED_BY ;
My_Class_A m_C_bool ;
My_Class_A m_C_bool_TRUE ;
My_Class_A m_C_bool_FALSE ;
My_Class_A m_C_OE ;
My_Class_A m_C_OE_int ;
My_Class_A m_O_long ;
My_Class_A m_O_float ;
My_Class_A m_O_double ;
My_Class_A m_O_char ;
My_Class_A m_O_string ;
My_Class_A m_O_uni ;
My_Class_A m_C_OE_long ;
My_Class_A m_C_OE_float ;
My_Class_A m_C_OE_double ;
My_Class_A m_C_OE_char ;
My_Class_A m_C_OE_string ;
My_Class_A m_O_bool ;
My_Class_A m_O_int ;
My_Class_A m_C_char ;
My_Class_A m_C_string ;
My_Class_A m_C_PI ;
My_Class_A m_C_ZO ;
My_Class_A m_C_ZO_int ;
My_Class_A m_C_ZO_long ;
My_Class_A m_Sp_DATE ;
My_Class_A m_Sp_TIME ;
My_Class_A m__DD ;
My_Class_A m__DD_int ;
My_Class_A m__DD_long ;
My_Class_A m__DD_float ;
My_Class_A m__ULT_float ;
My_Class_A m__ES_TN_double ;
My_Class_A m__ES_OR_ELS ;
My_Class_A m__ES_OR_ELS_int ;
My_Class_A m__ULT_long ;
My_Class_A m__ES_OR_ELS_float ;
My_Class_A m__ES_OR_ELS_double ;
My_Class_A m__RE_TN ;
My_Class_A m__RE_TN_int ;
My_Class_A m__ULT_double ;
My_Class_A m__ES_TN ;
My_Class_A m__ES_TN_int ;
My_Class_A m__ES_TN_long ;
My_Class_A m__UB_int ;
My_Class_A m__RE_TN_float ;
My_Class_A m__UAS_int ;
My_Class_A m__UAS_long ;
My_Class_A m__UAS_float ;
My_Class_A m__ES_TN_float ;
My_Class_A m__RE_TN_long ;
My_Class_A m__UAS_double ;
My_Class_A m__OT_ELS ;
My_Class_A m__OT_ELS_int ;
My_Class_A m__OT_ELS_long ;
My_Class_A m__OT_ELS_float ;
My_Class_A m__RE_TN_double ;
My_Class_A m__RE_OR_EALS ;
My_Class_A m__RE_OR_EALS_int ;
My_Class_A m__ES_OR_ELS_long ;
My_Class_A m__DD_double ;
My_Class_A m__DD_string ;
My_Class_A m__UB ;
My_Class_A m__UB_long ;
My_Class_A m__UB_float ;
My_Class_A m__UB_double ;
My_Class_A m__ULT ;
My_Class_A m__ULT_int ;
My_Class_A m__RE_OR_EALS_long ;
My_Class_A m__RE_OR_EALS_float ;
My_Class_A m__RE_OR_EALS_double ;
My_Class_A m__UAS ;
My_Class_A m__OT_ELS_double ;
My_Class_A m__IV ;
My_Class_A m__Izas ;

My_Class_A m_XXX ; /// add one to cause first level problem
****************************
My_Class_A m_YYY ; /// add both to cause second level problem
****************************
} ;
//----------------------------------------------
//----------------------------------------------

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:uC**************@TK2MSFTNGP11.phx.gbl...
Hi Vince,

However, you present a way I might be able to keep working. I could
change my members to pointers, and if that allows it to compile, then I
can keep working! So thanks again!

[==P==]

"Vince Yuan" <sh*******@citiz.net> wrote in message
news:O2*************@tk2msftngp13.phx.gbl...
> Hi Perteroid,
> I changed
> OAP_Branch m_Root ;
> to
> OAP_Branch^ m_Root ;
>
> Compiler accecpted your code.
>
> And another way is to change
> ref class OAP_Branch
> to
> value class OAP_Branch
>
> Hope this helps.
> --
> Vince
>
>
>



Dec 20 '05 #12
Peter,
Codeless destructors in C++/CLI are needless, you can safely remove them.
But that doesn't mean there is no bug in the compiler.

Willy.

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:eq**************@TK2MSFTNGP14.phx.gbl...
Willy,

Cool! I never ever create a class without a destructor. But my destructor
is code-less, so I guess it's ok to remove it based on what you said!!!
Thanks!

[==P==]

"Willy Denoyette [MVP]" <wi*************@telenet.be> wrote in message
news:uI**************@TK2MSFTNGP14.phx.gbl...
I don't thing it's due to the number of members, IMO the code
parser/generator has problems with the destructor (Dispose pattern),
remove the destructor and the problem goes away (tried with 240 members).

Willy.

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:%2****************@TK2MSFTNGP09.phx.gbl...
I have experimented with using more than one type of member to the
'offending' class. As such, I've reached this conclusion:

You cannot have more than 124 (user-defined?) stack semantic members,
even of mixed types, at the same time in one class.

I don't know if this applies only to 'ref' classes, or whether the fact
I'm using clr:/pure syntax is a factor. I have been able to re-create
the problem with deterministic 100% 'success' in both VS C++.NET Express
2005 and VS C++.NET 2005 PRO.

[==P==]

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:u%****************@TK2MSFTNGP12.phx.gbl...
This version is probably as close to as minimal a source file that can
be that causes error c1026:

//-----------------------------
#pragma once
//
// NOTE: At bottom are two source lines for m_XXX, and m_YYY. if you
comment them both
// out this will compile. If you un-comment one you get first level
error, un-comment
// both you get a second level error (you'll see).
//
// WORKAROUND: Change enough stack semantic members to pointers.
// [courtesy of Vince Yuan]
//

ref class My_Class_A
{
public:
My_Class_A() {}
~My_Class_A() {}
} ;

ref class My_Class_B
{
public:

My_Class_B() {}
~My_Class_B() {}

My_Class_A m_Root ;
My_Class_A m_Inunt ;
My_Class_A m_0_Is ;
My_Class_A m_1_Is ;
My_Class_A m_2_Is ;
My_Class_A m_L_NT ;
My_Class_A m_L_NP ;
My_Class_A m_L_AD ;
My_Class_A m_L_O ;
My_Class_A m_3_Is ;
My_Class_A m_N_Is ;
My_Class_A m_Ount ;
My_Class_A m_0_Os ;
My_Class_A m_1_Os ;
My_Class_A m_2_Os ;
My_Class_A m_3_Os ;
My_Class_A m_N_Os ;
My_Class_A m_Loc ;
My_Class_A m_Ariic ;
My_Class_A m_y ;
My_Class_A m_pason ;
My_Class_A m_stt ;
My_Class_A m_veion ;
My_Class_A m_utode ;
My_Class_A m_puNode ;
My_Class_A m_Ma ;
My_Class_A m_Vaable ;
My_Class_A m_Spial ;
My_Class_A m_L_NND ;
My_Class_A m_L_NR ;
My_Class_A m_L_EU ;
My_Class_A m_C_int ;
My_Class_A m_C_long ;
My_Class_A m_C_float ;
My_Class_A m_C_double ;
My_Class_A m_C_ZO_float ;
My_Class_A m_C_ZO_double ;
My_Class_A m_C_ZO_char ;
My_Class_A m_C_ZO_string ;
My_Class_A m_L_NT_EQU ;
My_Class_A m_L_LFT ;
My_Class_A m_L_RGHT ;
My_Class_A m_L_NT_LEFT ;
My_Class_A m_L_NT_RHT ;
My_Class_A m_L_TUE ;
My_Class_A m_L_FLSE ;
My_Class_A m_L_IPIES ;
My_Class_A m_L_NT_IIS ;
My_Class_A m_L_IPED_BY ;
My_Class_A m_L_NT_IMED_BY ;
My_Class_A m_C_bool ;
My_Class_A m_C_bool_TRUE ;
My_Class_A m_C_bool_FALSE ;
My_Class_A m_C_OE ;
My_Class_A m_C_OE_int ;
My_Class_A m_O_long ;
My_Class_A m_O_float ;
My_Class_A m_O_double ;
My_Class_A m_O_char ;
My_Class_A m_O_string ;
My_Class_A m_O_uni ;
My_Class_A m_C_OE_long ;
My_Class_A m_C_OE_float ;
My_Class_A m_C_OE_double ;
My_Class_A m_C_OE_char ;
My_Class_A m_C_OE_string ;
My_Class_A m_O_bool ;
My_Class_A m_O_int ;
My_Class_A m_C_char ;
My_Class_A m_C_string ;
My_Class_A m_C_PI ;
My_Class_A m_C_ZO ;
My_Class_A m_C_ZO_int ;
My_Class_A m_C_ZO_long ;
My_Class_A m_Sp_DATE ;
My_Class_A m_Sp_TIME ;
My_Class_A m__DD ;
My_Class_A m__DD_int ;
My_Class_A m__DD_long ;
My_Class_A m__DD_float ;
My_Class_A m__ULT_float ;
My_Class_A m__ES_TN_double ;
My_Class_A m__ES_OR_ELS ;
My_Class_A m__ES_OR_ELS_int ;
My_Class_A m__ULT_long ;
My_Class_A m__ES_OR_ELS_float ;
My_Class_A m__ES_OR_ELS_double ;
My_Class_A m__RE_TN ;
My_Class_A m__RE_TN_int ;
My_Class_A m__ULT_double ;
My_Class_A m__ES_TN ;
My_Class_A m__ES_TN_int ;
My_Class_A m__ES_TN_long ;
My_Class_A m__UB_int ;
My_Class_A m__RE_TN_float ;
My_Class_A m__UAS_int ;
My_Class_A m__UAS_long ;
My_Class_A m__UAS_float ;
My_Class_A m__ES_TN_float ;
My_Class_A m__RE_TN_long ;
My_Class_A m__UAS_double ;
My_Class_A m__OT_ELS ;
My_Class_A m__OT_ELS_int ;
My_Class_A m__OT_ELS_long ;
My_Class_A m__OT_ELS_float ;
My_Class_A m__RE_TN_double ;
My_Class_A m__RE_OR_EALS ;
My_Class_A m__RE_OR_EALS_int ;
My_Class_A m__ES_OR_ELS_long ;
My_Class_A m__DD_double ;
My_Class_A m__DD_string ;
My_Class_A m__UB ;
My_Class_A m__UB_long ;
My_Class_A m__UB_float ;
My_Class_A m__UB_double ;
My_Class_A m__ULT ;
My_Class_A m__ULT_int ;
My_Class_A m__RE_OR_EALS_long ;
My_Class_A m__RE_OR_EALS_float ;
My_Class_A m__RE_OR_EALS_double ;
My_Class_A m__UAS ;
My_Class_A m__OT_ELS_double ;
My_Class_A m__IV ;
My_Class_A m__Izas ;

My_Class_A m_XXX ; /// add one to cause first level problem
****************************
My_Class_A m_YYY ; /// add both to cause second level problem
****************************
} ;
//----------------------------------------------
//----------------------------------------------

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:uC**************@TK2MSFTNGP11.phx.gbl...
> Hi Vince,
>
> However, you present a way I might be able to keep working. I could
> change my members to pointers, and if that allows it to compile, then
> I can keep working! So thanks again!
>
> [==P==]
>
> "Vince Yuan" <sh*******@citiz.net> wrote in message
> news:O2*************@tk2msftngp13.phx.gbl...
>> Hi Perteroid,
>> I changed
>> OAP_Branch m_Root ;
>> to
>> OAP_Branch^ m_Root ;
>>
>> Compiler accecpted your code.
>>
>> And another way is to change
>> ref class OAP_Branch
>> to
>> value class OAP_Branch
>>
>> Hope this helps.
>> --
>> Vince
>>
>>
>>
>
>



Dec 20 '05 #13
So, I guess this means the real problem is that the new syntax has a limit
of 124 members any one ref class can be responsible for destroying
deterministically!

This is probably why pointers don't cause a problem: the responsibility for
destroying pointer type constructed instances is in the hands of the GC in a
non-deterministic way, or the programmer via manual means. This is in
contrast to the class itself being responsible for destruction of its stack
semantic members, and its this responsibility it seems to have an upper
limit of 124...

[==P==]

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:eq**************@TK2MSFTNGP14.phx.gbl...
Willy,

Cool! I never ever create a class without a destructor. But my destructor
is code-less, so I guess it's ok to remove it based on what you said!!!
Thanks!

[==P==]

"Willy Denoyette [MVP]" <wi*************@telenet.be> wrote in message
news:uI**************@TK2MSFTNGP14.phx.gbl...
I don't thing it's due to the number of members, IMO the code
parser/generator has problems with the destructor (Dispose pattern),
remove the destructor and the problem goes away (tried with 240 members).

Willy.

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:%2****************@TK2MSFTNGP09.phx.gbl...
I have experimented with using more than one type of member to the
'offending' class. As such, I've reached this conclusion:

You cannot have more than 124 (user-defined?) stack semantic members,
even of mixed types, at the same time in one class.

I don't know if this applies only to 'ref' classes, or whether the fact
I'm using clr:/pure syntax is a factor. I have been able to re-create
the problem with deterministic 100% 'success' in both VS C++.NET Express
2005 and VS C++.NET 2005 PRO.

[==P==]

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:u%****************@TK2MSFTNGP12.phx.gbl...
This version is probably as close to as minimal a source file that can
be that causes error c1026:

//-----------------------------
#pragma once
//
// NOTE: At bottom are two source lines for m_XXX, and m_YYY. if you
comment them both
// out this will compile. If you un-comment one you get first level
error, un-comment
// both you get a second level error (you'll see).
//
// WORKAROUND: Change enough stack semantic members to pointers.
// [courtesy of Vince Yuan]
//

ref class My_Class_A
{
public:
My_Class_A() {}
~My_Class_A() {}
} ;

ref class My_Class_B
{
public:

My_Class_B() {}
~My_Class_B() {}

My_Class_A m_Root ;
My_Class_A m_Inunt ;
My_Class_A m_0_Is ;
My_Class_A m_1_Is ;
My_Class_A m_2_Is ;
My_Class_A m_L_NT ;
My_Class_A m_L_NP ;
My_Class_A m_L_AD ;
My_Class_A m_L_O ;
My_Class_A m_3_Is ;
My_Class_A m_N_Is ;
My_Class_A m_Ount ;
My_Class_A m_0_Os ;
My_Class_A m_1_Os ;
My_Class_A m_2_Os ;
My_Class_A m_3_Os ;
My_Class_A m_N_Os ;
My_Class_A m_Loc ;
My_Class_A m_Ariic ;
My_Class_A m_y ;
My_Class_A m_pason ;
My_Class_A m_stt ;
My_Class_A m_veion ;
My_Class_A m_utode ;
My_Class_A m_puNode ;
My_Class_A m_Ma ;
My_Class_A m_Vaable ;
My_Class_A m_Spial ;
My_Class_A m_L_NND ;
My_Class_A m_L_NR ;
My_Class_A m_L_EU ;
My_Class_A m_C_int ;
My_Class_A m_C_long ;
My_Class_A m_C_float ;
My_Class_A m_C_double ;
My_Class_A m_C_ZO_float ;
My_Class_A m_C_ZO_double ;
My_Class_A m_C_ZO_char ;
My_Class_A m_C_ZO_string ;
My_Class_A m_L_NT_EQU ;
My_Class_A m_L_LFT ;
My_Class_A m_L_RGHT ;
My_Class_A m_L_NT_LEFT ;
My_Class_A m_L_NT_RHT ;
My_Class_A m_L_TUE ;
My_Class_A m_L_FLSE ;
My_Class_A m_L_IPIES ;
My_Class_A m_L_NT_IIS ;
My_Class_A m_L_IPED_BY ;
My_Class_A m_L_NT_IMED_BY ;
My_Class_A m_C_bool ;
My_Class_A m_C_bool_TRUE ;
My_Class_A m_C_bool_FALSE ;
My_Class_A m_C_OE ;
My_Class_A m_C_OE_int ;
My_Class_A m_O_long ;
My_Class_A m_O_float ;
My_Class_A m_O_double ;
My_Class_A m_O_char ;
My_Class_A m_O_string ;
My_Class_A m_O_uni ;
My_Class_A m_C_OE_long ;
My_Class_A m_C_OE_float ;
My_Class_A m_C_OE_double ;
My_Class_A m_C_OE_char ;
My_Class_A m_C_OE_string ;
My_Class_A m_O_bool ;
My_Class_A m_O_int ;
My_Class_A m_C_char ;
My_Class_A m_C_string ;
My_Class_A m_C_PI ;
My_Class_A m_C_ZO ;
My_Class_A m_C_ZO_int ;
My_Class_A m_C_ZO_long ;
My_Class_A m_Sp_DATE ;
My_Class_A m_Sp_TIME ;
My_Class_A m__DD ;
My_Class_A m__DD_int ;
My_Class_A m__DD_long ;
My_Class_A m__DD_float ;
My_Class_A m__ULT_float ;
My_Class_A m__ES_TN_double ;
My_Class_A m__ES_OR_ELS ;
My_Class_A m__ES_OR_ELS_int ;
My_Class_A m__ULT_long ;
My_Class_A m__ES_OR_ELS_float ;
My_Class_A m__ES_OR_ELS_double ;
My_Class_A m__RE_TN ;
My_Class_A m__RE_TN_int ;
My_Class_A m__ULT_double ;
My_Class_A m__ES_TN ;
My_Class_A m__ES_TN_int ;
My_Class_A m__ES_TN_long ;
My_Class_A m__UB_int ;
My_Class_A m__RE_TN_float ;
My_Class_A m__UAS_int ;
My_Class_A m__UAS_long ;
My_Class_A m__UAS_float ;
My_Class_A m__ES_TN_float ;
My_Class_A m__RE_TN_long ;
My_Class_A m__UAS_double ;
My_Class_A m__OT_ELS ;
My_Class_A m__OT_ELS_int ;
My_Class_A m__OT_ELS_long ;
My_Class_A m__OT_ELS_float ;
My_Class_A m__RE_TN_double ;
My_Class_A m__RE_OR_EALS ;
My_Class_A m__RE_OR_EALS_int ;
My_Class_A m__ES_OR_ELS_long ;
My_Class_A m__DD_double ;
My_Class_A m__DD_string ;
My_Class_A m__UB ;
My_Class_A m__UB_long ;
My_Class_A m__UB_float ;
My_Class_A m__UB_double ;
My_Class_A m__ULT ;
My_Class_A m__ULT_int ;
My_Class_A m__RE_OR_EALS_long ;
My_Class_A m__RE_OR_EALS_float ;
My_Class_A m__RE_OR_EALS_double ;
My_Class_A m__UAS ;
My_Class_A m__OT_ELS_double ;
My_Class_A m__IV ;
My_Class_A m__Izas ;

My_Class_A m_XXX ; /// add one to cause first level problem
****************************
My_Class_A m_YYY ; /// add both to cause second level problem
****************************
} ;
//----------------------------------------------
//----------------------------------------------

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:uC**************@TK2MSFTNGP11.phx.gbl...
> Hi Vince,
>
> However, you present a way I might be able to keep working. I could
> change my members to pointers, and if that allows it to compile, then
> I can keep working! So thanks again!
>
> [==P==]
>
> "Vince Yuan" <sh*******@citiz.net> wrote in message
> news:O2*************@tk2msftngp13.phx.gbl...
>> Hi Perteroid,
>> I changed
>> OAP_Branch m_Root ;
>> to
>> OAP_Branch^ m_Root ;
>>
>> Compiler accecpted your code.
>>
>> And another way is to change
>> ref class OAP_Branch
>> to
>> value class OAP_Branch
>>
>> Hope this helps.
>> --
>> Vince
>>
>>
>>
>
>



Dec 20 '05 #14
No, I don't think so. The problem is not a runtime issue, it's a compiler
issue. Or it's a compiler limitation or it's a compiler bug, if it's the
former (which I don't think it is), it should be documented, if it's the
latter it should (preferably) be corrected. Anyway, we'll have to wait to
see MSFT response to the filed bug report.

Willy.

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:en**************@TK2MSFTNGP14.phx.gbl...
So, I guess this means the real problem is that the new syntax has a limit
of 124 members any one ref class can be responsible for destroying
deterministically!

This is probably why pointers don't cause a problem: the responsibility
for destroying pointer type constructed instances is in the hands of the
GC in a non-deterministic way, or the programmer via manual means. This is
in contrast to the class itself being responsible for destruction of its
stack semantic members, and its this responsibility it seems to have an
upper limit of 124...

[==P==]

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:eq**************@TK2MSFTNGP14.phx.gbl...
Willy,

Cool! I never ever create a class without a destructor. But my destructor
is code-less, so I guess it's ok to remove it based on what you said!!!
Thanks!

[==P==]

"Willy Denoyette [MVP]" <wi*************@telenet.be> wrote in message
news:uI**************@TK2MSFTNGP14.phx.gbl...
I don't thing it's due to the number of members, IMO the code
parser/generator has problems with the destructor (Dispose pattern),
remove the destructor and the problem goes away (tried with 240 members).

Willy.

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:%2****************@TK2MSFTNGP09.phx.gbl...
I have experimented with using more than one type of member to the
'offending' class. As such, I've reached this conclusion:

You cannot have more than 124 (user-defined?) stack semantic members,
even of mixed types, at the same time in one class.

I don't know if this applies only to 'ref' classes, or whether the fact
I'm using clr:/pure syntax is a factor. I have been able to re-create
the problem with deterministic 100% 'success' in both VS C++.NET
Express 2005 and VS C++.NET 2005 PRO.

[==P==]

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:u%****************@TK2MSFTNGP12.phx.gbl...
> This version is probably as close to as minimal a source file that can
> be that causes error c1026:
>
> //-----------------------------
> #pragma once
> //
> // NOTE: At bottom are two source lines for m_XXX, and m_YYY. if you
> comment them both
> // out this will compile. If you un-comment one you get first level
> error, un-comment
> // both you get a second level error (you'll see).
> //
> // WORKAROUND: Change enough stack semantic members to pointers.
> // [courtesy of Vince Yuan]
> //
>
> ref class My_Class_A
> {
> public:
> My_Class_A() {}
> ~My_Class_A() {}
> } ;
>
> ref class My_Class_B
> {
> public:
>
> My_Class_B() {}
> ~My_Class_B() {}
>
> My_Class_A m_Root ;
> My_Class_A m_Inunt ;
> My_Class_A m_0_Is ;
> My_Class_A m_1_Is ;
> My_Class_A m_2_Is ;
> My_Class_A m_L_NT ;
> My_Class_A m_L_NP ;
> My_Class_A m_L_AD ;
> My_Class_A m_L_O ;
> My_Class_A m_3_Is ;
> My_Class_A m_N_Is ;
> My_Class_A m_Ount ;
> My_Class_A m_0_Os ;
> My_Class_A m_1_Os ;
> My_Class_A m_2_Os ;
> My_Class_A m_3_Os ;
> My_Class_A m_N_Os ;
> My_Class_A m_Loc ;
> My_Class_A m_Ariic ;
> My_Class_A m_y ;
> My_Class_A m_pason ;
> My_Class_A m_stt ;
> My_Class_A m_veion ;
> My_Class_A m_utode ;
> My_Class_A m_puNode ;
> My_Class_A m_Ma ;
> My_Class_A m_Vaable ;
> My_Class_A m_Spial ;
> My_Class_A m_L_NND ;
> My_Class_A m_L_NR ;
> My_Class_A m_L_EU ;
> My_Class_A m_C_int ;
> My_Class_A m_C_long ;
> My_Class_A m_C_float ;
> My_Class_A m_C_double ;
> My_Class_A m_C_ZO_float ;
> My_Class_A m_C_ZO_double ;
> My_Class_A m_C_ZO_char ;
> My_Class_A m_C_ZO_string ;
> My_Class_A m_L_NT_EQU ;
> My_Class_A m_L_LFT ;
> My_Class_A m_L_RGHT ;
> My_Class_A m_L_NT_LEFT ;
> My_Class_A m_L_NT_RHT ;
> My_Class_A m_L_TUE ;
> My_Class_A m_L_FLSE ;
> My_Class_A m_L_IPIES ;
> My_Class_A m_L_NT_IIS ;
> My_Class_A m_L_IPED_BY ;
> My_Class_A m_L_NT_IMED_BY ;
> My_Class_A m_C_bool ;
> My_Class_A m_C_bool_TRUE ;
> My_Class_A m_C_bool_FALSE ;
> My_Class_A m_C_OE ;
> My_Class_A m_C_OE_int ;
> My_Class_A m_O_long ;
> My_Class_A m_O_float ;
> My_Class_A m_O_double ;
> My_Class_A m_O_char ;
> My_Class_A m_O_string ;
> My_Class_A m_O_uni ;
> My_Class_A m_C_OE_long ;
> My_Class_A m_C_OE_float ;
> My_Class_A m_C_OE_double ;
> My_Class_A m_C_OE_char ;
> My_Class_A m_C_OE_string ;
> My_Class_A m_O_bool ;
> My_Class_A m_O_int ;
> My_Class_A m_C_char ;
> My_Class_A m_C_string ;
> My_Class_A m_C_PI ;
> My_Class_A m_C_ZO ;
> My_Class_A m_C_ZO_int ;
> My_Class_A m_C_ZO_long ;
> My_Class_A m_Sp_DATE ;
> My_Class_A m_Sp_TIME ;
> My_Class_A m__DD ;
> My_Class_A m__DD_int ;
> My_Class_A m__DD_long ;
> My_Class_A m__DD_float ;
> My_Class_A m__ULT_float ;
> My_Class_A m__ES_TN_double ;
> My_Class_A m__ES_OR_ELS ;
> My_Class_A m__ES_OR_ELS_int ;
> My_Class_A m__ULT_long ;
> My_Class_A m__ES_OR_ELS_float ;
> My_Class_A m__ES_OR_ELS_double ;
> My_Class_A m__RE_TN ;
> My_Class_A m__RE_TN_int ;
> My_Class_A m__ULT_double ;
> My_Class_A m__ES_TN ;
> My_Class_A m__ES_TN_int ;
> My_Class_A m__ES_TN_long ;
> My_Class_A m__UB_int ;
> My_Class_A m__RE_TN_float ;
> My_Class_A m__UAS_int ;
> My_Class_A m__UAS_long ;
> My_Class_A m__UAS_float ;
> My_Class_A m__ES_TN_float ;
> My_Class_A m__RE_TN_long ;
> My_Class_A m__UAS_double ;
> My_Class_A m__OT_ELS ;
> My_Class_A m__OT_ELS_int ;
> My_Class_A m__OT_ELS_long ;
> My_Class_A m__OT_ELS_float ;
> My_Class_A m__RE_TN_double ;
> My_Class_A m__RE_OR_EALS ;
> My_Class_A m__RE_OR_EALS_int ;
> My_Class_A m__ES_OR_ELS_long ;
> My_Class_A m__DD_double ;
> My_Class_A m__DD_string ;
> My_Class_A m__UB ;
> My_Class_A m__UB_long ;
> My_Class_A m__UB_float ;
> My_Class_A m__UB_double ;
> My_Class_A m__ULT ;
> My_Class_A m__ULT_int ;
> My_Class_A m__RE_OR_EALS_long ;
> My_Class_A m__RE_OR_EALS_float ;
> My_Class_A m__RE_OR_EALS_double ;
> My_Class_A m__UAS ;
> My_Class_A m__OT_ELS_double ;
> My_Class_A m__IV ;
> My_Class_A m__Izas ;
>
> My_Class_A m_XXX ; /// add one to cause first level problem
> ****************************
> My_Class_A m_YYY ; /// add both to cause second level problem
> ****************************
> } ;
> //----------------------------------------------
> //----------------------------------------------
>
> "Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
> news:uC**************@TK2MSFTNGP11.phx.gbl...
>> Hi Vince,
>>
>> However, you present a way I might be able to keep working. I could
>> change my members to pointers, and if that allows it to compile, then
>> I can keep working! So thanks again!
>>
>> [==P==]
>>
>> "Vince Yuan" <sh*******@citiz.net> wrote in message
>> news:O2*************@tk2msftngp13.phx.gbl...
>>> Hi Perteroid,
>>> I changed
>>> OAP_Branch m_Root ;
>>> to
>>> OAP_Branch^ m_Root ;
>>>
>>> Compiler accecpted your code.
>>>
>>> And another way is to change
>>> ref class OAP_Branch
>>> to
>>> value class OAP_Branch
>>>
>>> Hope this helps.
>>> --
>>> Vince
>>>
>>>
>>>
>>
>>
>
>



Dec 20 '05 #15
Good point. I was viewing it from a 'run' point of view. Now I'm thinking as
it compiles it keeps track of how it must do destruction, and if the number
of things it needs to keep track of to destroy gets too big, it can't handle
it. Although 124 seems like kind of a small number to me... : )

I totally agree with you on the 'document or correct' point of view...

Yeah, I'd like to see the response from MFST too. This could be the cause of
a few things. I'm basing this on the fact that it was this same source file
that was generating my "IntelliSense Updating..."-takes-forever problem...

[==P==]

"Willy Denoyette [MVP]" <wi*************@telenet.be> wrote in message
news:Ob*************@TK2MSFTNGP15.phx.gbl...
No, I don't think so. The problem is not a runtime issue, it's a compiler
issue. Or it's a compiler limitation or it's a compiler bug, if it's the
former (which I don't think it is), it should be documented, if it's the
latter it should (preferably) be corrected. Anyway, we'll have to wait to
see MSFT response to the filed bug report.

Willy.

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:en**************@TK2MSFTNGP14.phx.gbl...
So, I guess this means the real problem is that the new syntax has a
limit of 124 members any one ref class can be responsible for destroying
deterministically!

This is probably why pointers don't cause a problem: the responsibility
for destroying pointer type constructed instances is in the hands of the
GC in a non-deterministic way, or the programmer via manual means. This
is in contrast to the class itself being responsible for destruction of
its stack semantic members, and its this responsibility it seems to have
an upper limit of 124...

[==P==]

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:eq**************@TK2MSFTNGP14.phx.gbl...
Willy,

Cool! I never ever create a class without a destructor. But my
destructor is code-less, so I guess it's ok to remove it based on what
you said!!! Thanks!

[==P==]

"Willy Denoyette [MVP]" <wi*************@telenet.be> wrote in message
news:uI**************@TK2MSFTNGP14.phx.gbl...
I don't thing it's due to the number of members, IMO the code
parser/generator has problems with the destructor (Dispose pattern),
remove the destructor and the problem goes away (tried with 240
members).

Willy.

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:%2****************@TK2MSFTNGP09.phx.gbl...
>I have experimented with using more than one type of member to the
>'offending' class. As such, I've reached this conclusion:
>
> You cannot have more than 124 (user-defined?) stack semantic members,
> even of mixed types, at the same time in one class.
>
> I don't know if this applies only to 'ref' classes, or whether the
> fact I'm using clr:/pure syntax is a factor. I have been able to
> re-create the problem with deterministic 100% 'success' in both VS
> C++.NET Express 2005 and VS C++.NET 2005 PRO.
>
> [==P==]
>
> "Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
> news:u%****************@TK2MSFTNGP12.phx.gbl...
>> This version is probably as close to as minimal a source file that
>> can be that causes error c1026:
>>
>> //-----------------------------
>> #pragma once
>> //
>> // NOTE: At bottom are two source lines for m_XXX, and m_YYY. if you
>> comment them both
>> // out this will compile. If you un-comment one you get first level
>> error, un-comment
>> // both you get a second level error (you'll see).
>> //
>> // WORKAROUND: Change enough stack semantic members to pointers.
>> // [courtesy of Vince Yuan]
>> //
>>
>> ref class My_Class_A
>> {
>> public:
>> My_Class_A() {}
>> ~My_Class_A() {}
>> } ;
>>
>> ref class My_Class_B
>> {
>> public:
>>
>> My_Class_B() {}
>> ~My_Class_B() {}
>>
>> My_Class_A m_Root ;
>> My_Class_A m_Inunt ;
>> My_Class_A m_0_Is ;
>> My_Class_A m_1_Is ;
>> My_Class_A m_2_Is ;
>> My_Class_A m_L_NT ;
>> My_Class_A m_L_NP ;
>> My_Class_A m_L_AD ;
>> My_Class_A m_L_O ;
>> My_Class_A m_3_Is ;
>> My_Class_A m_N_Is ;
>> My_Class_A m_Ount ;
>> My_Class_A m_0_Os ;
>> My_Class_A m_1_Os ;
>> My_Class_A m_2_Os ;
>> My_Class_A m_3_Os ;
>> My_Class_A m_N_Os ;
>> My_Class_A m_Loc ;
>> My_Class_A m_Ariic ;
>> My_Class_A m_y ;
>> My_Class_A m_pason ;
>> My_Class_A m_stt ;
>> My_Class_A m_veion ;
>> My_Class_A m_utode ;
>> My_Class_A m_puNode ;
>> My_Class_A m_Ma ;
>> My_Class_A m_Vaable ;
>> My_Class_A m_Spial ;
>> My_Class_A m_L_NND ;
>> My_Class_A m_L_NR ;
>> My_Class_A m_L_EU ;
>> My_Class_A m_C_int ;
>> My_Class_A m_C_long ;
>> My_Class_A m_C_float ;
>> My_Class_A m_C_double ;
>> My_Class_A m_C_ZO_float ;
>> My_Class_A m_C_ZO_double ;
>> My_Class_A m_C_ZO_char ;
>> My_Class_A m_C_ZO_string ;
>> My_Class_A m_L_NT_EQU ;
>> My_Class_A m_L_LFT ;
>> My_Class_A m_L_RGHT ;
>> My_Class_A m_L_NT_LEFT ;
>> My_Class_A m_L_NT_RHT ;
>> My_Class_A m_L_TUE ;
>> My_Class_A m_L_FLSE ;
>> My_Class_A m_L_IPIES ;
>> My_Class_A m_L_NT_IIS ;
>> My_Class_A m_L_IPED_BY ;
>> My_Class_A m_L_NT_IMED_BY ;
>> My_Class_A m_C_bool ;
>> My_Class_A m_C_bool_TRUE ;
>> My_Class_A m_C_bool_FALSE ;
>> My_Class_A m_C_OE ;
>> My_Class_A m_C_OE_int ;
>> My_Class_A m_O_long ;
>> My_Class_A m_O_float ;
>> My_Class_A m_O_double ;
>> My_Class_A m_O_char ;
>> My_Class_A m_O_string ;
>> My_Class_A m_O_uni ;
>> My_Class_A m_C_OE_long ;
>> My_Class_A m_C_OE_float ;
>> My_Class_A m_C_OE_double ;
>> My_Class_A m_C_OE_char ;
>> My_Class_A m_C_OE_string ;
>> My_Class_A m_O_bool ;
>> My_Class_A m_O_int ;
>> My_Class_A m_C_char ;
>> My_Class_A m_C_string ;
>> My_Class_A m_C_PI ;
>> My_Class_A m_C_ZO ;
>> My_Class_A m_C_ZO_int ;
>> My_Class_A m_C_ZO_long ;
>> My_Class_A m_Sp_DATE ;
>> My_Class_A m_Sp_TIME ;
>> My_Class_A m__DD ;
>> My_Class_A m__DD_int ;
>> My_Class_A m__DD_long ;
>> My_Class_A m__DD_float ;
>> My_Class_A m__ULT_float ;
>> My_Class_A m__ES_TN_double ;
>> My_Class_A m__ES_OR_ELS ;
>> My_Class_A m__ES_OR_ELS_int ;
>> My_Class_A m__ULT_long ;
>> My_Class_A m__ES_OR_ELS_float ;
>> My_Class_A m__ES_OR_ELS_double ;
>> My_Class_A m__RE_TN ;
>> My_Class_A m__RE_TN_int ;
>> My_Class_A m__ULT_double ;
>> My_Class_A m__ES_TN ;
>> My_Class_A m__ES_TN_int ;
>> My_Class_A m__ES_TN_long ;
>> My_Class_A m__UB_int ;
>> My_Class_A m__RE_TN_float ;
>> My_Class_A m__UAS_int ;
>> My_Class_A m__UAS_long ;
>> My_Class_A m__UAS_float ;
>> My_Class_A m__ES_TN_float ;
>> My_Class_A m__RE_TN_long ;
>> My_Class_A m__UAS_double ;
>> My_Class_A m__OT_ELS ;
>> My_Class_A m__OT_ELS_int ;
>> My_Class_A m__OT_ELS_long ;
>> My_Class_A m__OT_ELS_float ;
>> My_Class_A m__RE_TN_double ;
>> My_Class_A m__RE_OR_EALS ;
>> My_Class_A m__RE_OR_EALS_int ;
>> My_Class_A m__ES_OR_ELS_long ;
>> My_Class_A m__DD_double ;
>> My_Class_A m__DD_string ;
>> My_Class_A m__UB ;
>> My_Class_A m__UB_long ;
>> My_Class_A m__UB_float ;
>> My_Class_A m__UB_double ;
>> My_Class_A m__ULT ;
>> My_Class_A m__ULT_int ;
>> My_Class_A m__RE_OR_EALS_long ;
>> My_Class_A m__RE_OR_EALS_float ;
>> My_Class_A m__RE_OR_EALS_double ;
>> My_Class_A m__UAS ;
>> My_Class_A m__OT_ELS_double ;
>> My_Class_A m__IV ;
>> My_Class_A m__Izas ;
>>
>> My_Class_A m_XXX ; /// add one to cause first level problem
>> ****************************
>> My_Class_A m_YYY ; /// add both to cause second level problem
>> ****************************
>> } ;
>> //----------------------------------------------
>> //----------------------------------------------
>>
>> "Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
>> news:uC**************@TK2MSFTNGP11.phx.gbl...
>>> Hi Vince,
>>>
>>> However, you present a way I might be able to keep working. I could
>>> change my members to pointers, and if that allows it to compile,
>>> then I can keep working! So thanks again!
>>>
>>> [==P==]
>>>
>>> "Vince Yuan" <sh*******@citiz.net> wrote in message
>>> news:O2*************@tk2msftngp13.phx.gbl...
>>>> Hi Perteroid,
>>>> I changed
>>>> OAP_Branch m_Root ;
>>>> to
>>>> OAP_Branch^ m_Root ;
>>>>
>>>> Compiler accecpted your code.
>>>>
>>>> And another way is to change
>>>> ref class OAP_Branch
>>>> to
>>>> value class OAP_Branch
>>>>
>>>> Hope this helps.
>>>> --
>>>> Vince
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>



Dec 21 '05 #16
PS - It might speed up the process if more people left validations. Here is
the bug link:

http://lab.msdn.microsoft.com/Produc...0-44bd02f398c6

Thanks!

[==P==]

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:%2****************@TK2MSFTNGP14.phx.gbl...
Good point. I was viewing it from a 'run' point of view. Now I'm thinking
as it compiles it keeps track of how it must do destruction, and if the
number of things it needs to keep track of to destroy gets too big, it
can't handle it. Although 124 seems like kind of a small number to me...
: )

I totally agree with you on the 'document or correct' point of view...

Yeah, I'd like to see the response from MFST too. This could be the cause
of a few things. I'm basing this on the fact that it was this same source
file that was generating my "IntelliSense Updating..."-takes-forever
problem...

[==P==]

"Willy Denoyette [MVP]" <wi*************@telenet.be> wrote in message
news:Ob*************@TK2MSFTNGP15.phx.gbl...
No, I don't think so. The problem is not a runtime issue, it's a compiler
issue. Or it's a compiler limitation or it's a compiler bug, if it's the
former (which I don't think it is), it should be documented, if it's the
latter it should (preferably) be corrected. Anyway, we'll have to wait to
see MSFT response to the filed bug report.

Willy.

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:en**************@TK2MSFTNGP14.phx.gbl...
So, I guess this means the real problem is that the new syntax has a
limit of 124 members any one ref class can be responsible for destroying
deterministically!

This is probably why pointers don't cause a problem: the responsibility
for destroying pointer type constructed instances is in the hands of the
GC in a non-deterministic way, or the programmer via manual means. This
is in contrast to the class itself being responsible for destruction of
its stack semantic members, and its this responsibility it seems to have
an upper limit of 124...

[==P==]

"Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
news:eq**************@TK2MSFTNGP14.phx.gbl...
Willy,

Cool! I never ever create a class without a destructor. But my
destructor is code-less, so I guess it's ok to remove it based on what
you said!!! Thanks!

[==P==]

"Willy Denoyette [MVP]" <wi*************@telenet.be> wrote in message
news:uI**************@TK2MSFTNGP14.phx.gbl...
>I don't thing it's due to the number of members, IMO the code
>parser/generator has problems with the destructor (Dispose pattern),
>remove the destructor and the problem goes away (tried with 240
>members).
>
> Willy.
>
>
>
>
>
> "Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
> news:%2****************@TK2MSFTNGP09.phx.gbl...
>>I have experimented with using more than one type of member to the
>>'offending' class. As such, I've reached this conclusion:
>>
>> You cannot have more than 124 (user-defined?) stack semantic members,
>> even of mixed types, at the same time in one class.
>>
>> I don't know if this applies only to 'ref' classes, or whether the
>> fact I'm using clr:/pure syntax is a factor. I have been able to
>> re-create the problem with deterministic 100% 'success' in both VS
>> C++.NET Express 2005 and VS C++.NET 2005 PRO.
>>
>> [==P==]
>>
>> "Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
>> news:u%****************@TK2MSFTNGP12.phx.gbl...
>>> This version is probably as close to as minimal a source file that
>>> can be that causes error c1026:
>>>
>>> //-----------------------------
>>> #pragma once
>>> //
>>> // NOTE: At bottom are two source lines for m_XXX, and m_YYY. if you
>>> comment them both
>>> // out this will compile. If you un-comment one you get first level
>>> error, un-comment
>>> // both you get a second level error (you'll see).
>>> //
>>> // WORKAROUND: Change enough stack semantic members to pointers.
>>> // [courtesy of Vince Yuan]
>>> //
>>>
>>> ref class My_Class_A
>>> {
>>> public:
>>> My_Class_A() {}
>>> ~My_Class_A() {}
>>> } ;
>>>
>>> ref class My_Class_B
>>> {
>>> public:
>>>
>>> My_Class_B() {}
>>> ~My_Class_B() {}
>>>
>>> My_Class_A m_Root ;
>>> My_Class_A m_Inunt ;
>>> My_Class_A m_0_Is ;
>>> My_Class_A m_1_Is ;
>>> My_Class_A m_2_Is ;
>>> My_Class_A m_L_NT ;
>>> My_Class_A m_L_NP ;
>>> My_Class_A m_L_AD ;
>>> My_Class_A m_L_O ;
>>> My_Class_A m_3_Is ;
>>> My_Class_A m_N_Is ;
>>> My_Class_A m_Ount ;
>>> My_Class_A m_0_Os ;
>>> My_Class_A m_1_Os ;
>>> My_Class_A m_2_Os ;
>>> My_Class_A m_3_Os ;
>>> My_Class_A m_N_Os ;
>>> My_Class_A m_Loc ;
>>> My_Class_A m_Ariic ;
>>> My_Class_A m_y ;
>>> My_Class_A m_pason ;
>>> My_Class_A m_stt ;
>>> My_Class_A m_veion ;
>>> My_Class_A m_utode ;
>>> My_Class_A m_puNode ;
>>> My_Class_A m_Ma ;
>>> My_Class_A m_Vaable ;
>>> My_Class_A m_Spial ;
>>> My_Class_A m_L_NND ;
>>> My_Class_A m_L_NR ;
>>> My_Class_A m_L_EU ;
>>> My_Class_A m_C_int ;
>>> My_Class_A m_C_long ;
>>> My_Class_A m_C_float ;
>>> My_Class_A m_C_double ;
>>> My_Class_A m_C_ZO_float ;
>>> My_Class_A m_C_ZO_double ;
>>> My_Class_A m_C_ZO_char ;
>>> My_Class_A m_C_ZO_string ;
>>> My_Class_A m_L_NT_EQU ;
>>> My_Class_A m_L_LFT ;
>>> My_Class_A m_L_RGHT ;
>>> My_Class_A m_L_NT_LEFT ;
>>> My_Class_A m_L_NT_RHT ;
>>> My_Class_A m_L_TUE ;
>>> My_Class_A m_L_FLSE ;
>>> My_Class_A m_L_IPIES ;
>>> My_Class_A m_L_NT_IIS ;
>>> My_Class_A m_L_IPED_BY ;
>>> My_Class_A m_L_NT_IMED_BY ;
>>> My_Class_A m_C_bool ;
>>> My_Class_A m_C_bool_TRUE ;
>>> My_Class_A m_C_bool_FALSE ;
>>> My_Class_A m_C_OE ;
>>> My_Class_A m_C_OE_int ;
>>> My_Class_A m_O_long ;
>>> My_Class_A m_O_float ;
>>> My_Class_A m_O_double ;
>>> My_Class_A m_O_char ;
>>> My_Class_A m_O_string ;
>>> My_Class_A m_O_uni ;
>>> My_Class_A m_C_OE_long ;
>>> My_Class_A m_C_OE_float ;
>>> My_Class_A m_C_OE_double ;
>>> My_Class_A m_C_OE_char ;
>>> My_Class_A m_C_OE_string ;
>>> My_Class_A m_O_bool ;
>>> My_Class_A m_O_int ;
>>> My_Class_A m_C_char ;
>>> My_Class_A m_C_string ;
>>> My_Class_A m_C_PI ;
>>> My_Class_A m_C_ZO ;
>>> My_Class_A m_C_ZO_int ;
>>> My_Class_A m_C_ZO_long ;
>>> My_Class_A m_Sp_DATE ;
>>> My_Class_A m_Sp_TIME ;
>>> My_Class_A m__DD ;
>>> My_Class_A m__DD_int ;
>>> My_Class_A m__DD_long ;
>>> My_Class_A m__DD_float ;
>>> My_Class_A m__ULT_float ;
>>> My_Class_A m__ES_TN_double ;
>>> My_Class_A m__ES_OR_ELS ;
>>> My_Class_A m__ES_OR_ELS_int ;
>>> My_Class_A m__ULT_long ;
>>> My_Class_A m__ES_OR_ELS_float ;
>>> My_Class_A m__ES_OR_ELS_double ;
>>> My_Class_A m__RE_TN ;
>>> My_Class_A m__RE_TN_int ;
>>> My_Class_A m__ULT_double ;
>>> My_Class_A m__ES_TN ;
>>> My_Class_A m__ES_TN_int ;
>>> My_Class_A m__ES_TN_long ;
>>> My_Class_A m__UB_int ;
>>> My_Class_A m__RE_TN_float ;
>>> My_Class_A m__UAS_int ;
>>> My_Class_A m__UAS_long ;
>>> My_Class_A m__UAS_float ;
>>> My_Class_A m__ES_TN_float ;
>>> My_Class_A m__RE_TN_long ;
>>> My_Class_A m__UAS_double ;
>>> My_Class_A m__OT_ELS ;
>>> My_Class_A m__OT_ELS_int ;
>>> My_Class_A m__OT_ELS_long ;
>>> My_Class_A m__OT_ELS_float ;
>>> My_Class_A m__RE_TN_double ;
>>> My_Class_A m__RE_OR_EALS ;
>>> My_Class_A m__RE_OR_EALS_int ;
>>> My_Class_A m__ES_OR_ELS_long ;
>>> My_Class_A m__DD_double ;
>>> My_Class_A m__DD_string ;
>>> My_Class_A m__UB ;
>>> My_Class_A m__UB_long ;
>>> My_Class_A m__UB_float ;
>>> My_Class_A m__UB_double ;
>>> My_Class_A m__ULT ;
>>> My_Class_A m__ULT_int ;
>>> My_Class_A m__RE_OR_EALS_long ;
>>> My_Class_A m__RE_OR_EALS_float ;
>>> My_Class_A m__RE_OR_EALS_double ;
>>> My_Class_A m__UAS ;
>>> My_Class_A m__OT_ELS_double ;
>>> My_Class_A m__IV ;
>>> My_Class_A m__Izas ;
>>>
>>> My_Class_A m_XXX ; /// add one to cause first level problem
>>> ****************************
>>> My_Class_A m_YYY ; /// add both to cause second level problem
>>> ****************************
>>> } ;
>>> //----------------------------------------------
>>> //----------------------------------------------
>>>
>>> "Peter Oliphant" <po*******@RoundTripInc.com> wrote in message
>>> news:uC**************@TK2MSFTNGP11.phx.gbl...
>>>> Hi Vince,
>>>>
>>>> However, you present a way I might be able to keep working. I could
>>>> change my members to pointers, and if that allows it to compile,
>>>> then I can keep working! So thanks again!
>>>>
>>>> [==P==]
>>>>
>>>> "Vince Yuan" <sh*******@citiz.net> wrote in message
>>>> news:O2*************@tk2msftngp13.phx.gbl...
>>>>> Hi Perteroid,
>>>>> I changed
>>>>> OAP_Branch m_Root ;
>>>>> to
>>>>> OAP_Branch^ m_Root ;
>>>>>
>>>>> Compiler accecpted your code.
>>>>>
>>>>> And another way is to change
>>>>> ref class OAP_Branch
>>>>> to
>>>>> value class OAP_Branch
>>>>>
>>>>> Hope this helps.
>>>>> --
>>>>> Vince
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>



Dec 21 '05 #17
>>That's a pretty small repro alright! You might want to contact PSS

I called PSS, and told them I had a bug to report. But they said I had to
send them the problem via U.S. Mail (i.e., stamp, envelope, etc.). Why would
one of the biggest companies involved with electronic communication ask me
to send bug reports via U.S. Mail (I will point out they never mentioned the
on-line bug report system on the phone)?

Plus, now I found a bug in the bug report system...lol! I found this one
trying to update my bug report from a different computer. Try leaving a 'New
Comment' at the bottom of a bug report page. Once you type in a comment and
hit Submit it will say the service is temporarily unavailable. It has been
temporarily unavailable now for weeks. I reported this as a bug in the bug
report system, but no reply yet.

How does one get MS's attention about something that is a fundamental
problem, such as the bug I found?

[==P==]

"Carl Daniel [VC++ MVP]" <cp*****************************@mvps.org.nospam >
wrote in message news:eC**************@TK2MSFTNGP14.phx.gbl...
Peteroid wrote:
Yes, it is entirely in-line. But I've reduced it down to a pretty
small source file that independently causes problem attached (see
instructions at top of source file in commented NOTE)...


That's a pretty small repro alright! You might want to contact PSS, or at
the very least open a bug report at
http://lab.msdn.microsoft.com/productfeedback

-cd

Dec 22 '05 #18
>I called PSS, and told them I had a bug to report. But they said I had to
send them the problem via U.S. Mail
They weren't pulling your leg were they? :)

On the couple of occasions where I've needed to phone MS support
(albeit in from the UK), they've usually corresponded entirely via
email after the initial contact.
Plus, now I found a bug in the bug report system...lol! I found this one
trying to update my bug report from a different computer. Try leaving a 'New
Comment' at the bottom of a bug report page. Once you type in a comment and
hit Submit it will say the service is temporarily unavailable. It has been
temporarily unavailable now for weeks. I reported this as a bug in the bug
report system, but no reply yet.


It is something that relies on a web browser - so I don't expect too
much consistency. On my home machine I couldn't ever get access to my
Hotmail account - kept getting some passport error. Never had any
passport problems with other MS sites, and I could always access my
Hotmail account from any other computer!

Dave
Dec 23 '05 #19

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

19
by: Jim | last post by:
I have spent the past few weeks designing a database for my company. The problem is I have started running into what I believe are stack overflow problems. There are two tab controls on the form...
5
by: ip4ram | last post by:
I am quite puzzled by the stack overflow which I am encountering.Here is the pseudocode //define stack structure //function operating on stack void my_stack_function( function parameters) {...
20
by: Sushil | last post by:
Hi gurus I was reading FAQ "alloca cannot be written portably, and is difficult to implement on machines without a conventional stack." I understand that the standard does not mandate...
4
by: Peter | last post by:
My program causes StackOverflow because it makes many recursive calls due to the program's nature (not a bug!). I would like to know if there is any settings in the compiler or VS.NET IDE so that...
2
by: The Kiddie | last post by:
Hi Guys, I am doing some work with a treenode and I want to record the selected item, and it may change while the user is performing some tasks and I need to know which one was originally...
2
by: David W. Walker | last post by:
I am attempting to port a C code that runs OK on a number of Linux and Unix machines to Windows XP using Visual Studio C++. I have set the program up as a console application, but when I try to run...
6
by: Daz | last post by:
Hi everyone! It is indeed, once again time for me to ask another stupid question. I have been searching around on the net for quite a while, and can't find anything that explains 'exactly'...
24
by: John | last post by:
I know this is a very fundamental question. I am still quite confused if the program call stack stack should always grows upwards from the bottom, or the opposite, or doesn't matter?? That means...
7
by: amit.atray | last post by:
Environement : Sun OS + gnu tools + sun studio (dbx etc) having some Old C-Code (ansi + KR Style) and code inspection shows some big size variable (auto) allocated (on stack) say for ex. char...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.