Oh, sorry I didn't read your message closely enough. It appears to be a compiler bug. It isn't legal for a type to have to identical methods (except when they're privatescope).
Regards, Jeroen > -----Original Message----- > From: Unmoderated discussion of advanced .NET topics. > [mailto:[EMAIL PROTECTED] On Behalf Of > Bogdan Lachendro > Sent: Friday, November 19, 2004 16:27 > To: [EMAIL PROTECTED] > Subject: Re: [ADVANCED-DOTNET] const modifier in method > parameter - managed c++ > > On 2004-11-19 16:22, Jeroen Frijters wrote: > > Actually there is a difference between the method > signatures. If you look closely you'll see that the const > argument is annotated with a custom modifier. > > > > Here are two signatures that differ only by const: > > .method public instance void foo(int32* i) cil managed > > .method public instance void foo(int32 > modopt([Microsoft.VisualC]Microsoft.VisualC.IsConstModifier)* > i) cil managed > > Yes, that what the modopt IsConstModifier is used for. The problem is > with difference between const pointer and pointer to const - and I'm > talking about pointers to managed types. > > > > > > > > >>-----Original Message----- > >>From: Unmoderated discussion of advanced .NET topics. > >>[mailto:[EMAIL PROTECTED] On Behalf Of > >>Bogdan Lachendro > >>Sent: Friday, November 19, 2004 16:02 > >>To: [EMAIL PROTECTED] > >>Subject: Re: [ADVANCED-DOTNET] const modifier in method > >>parameter - managed c++ > >> > >>On 2004-11-19 15:51, Stoyan Damov wrote: > >> > >>>I think that my previous post could answer the question - > so you can > >>>consume both methods from a managed C++ client? If the IL > >> > >>is same for > >> > >>>both methods, then at least Microsoft should have added a > >>>HideFromNonMcppCompilers (or something like this) to the > >> > >>method as well, > >> > >>>so non-MC++ clients cannot see the "offending" method. > >> > >>I have changed the code to : > >> > >> public __gc class MyClass > >> { > >> public: > >> > >> void foo(MyClass* const a) > >> { > >> System::Console::WriteLine("void foo(MyClass* > const a)"); > >> } > >> > >> void foo(const MyClass* a) > >> { > >> System::Console::WriteLine("void foo(const > MyClass* a)"); > >> } > >> > >> void boo() > >> { > >> const MyClass* myClass; > >> this->foo(myClass); > >> } > >> > >> void boo1() > >> { > >> MyClass* const myClass = 0; > >> this->foo(myClass); > >> } > >> > >> }; > >> > >>Then created C# executable with main: > >> > >> MyClass a = new MyClass(); > >> a.boo(); > >> a.boo1(); > >> > >>The output is: > >> > >>void foo(const MyClass* a) > >>void foo(MyClass* const a) > >> > >>The IL code for those methods differ only by method tokens. > >> > >>B. > >> > >> > >> > >>>-----Original Message----- > >>>From: Unmoderated discussion of advanced .NET topics. > >>>[mailto:[EMAIL PROTECTED] On Behalf Of Bogdan > >>>Lachendro > >>>Sent: Friday, November 19, 2004 4:48 PM > >>>To: [EMAIL PROTECTED] > >>>Subject: Re: [ADVANCED-DOTNET] const modifier in method parameter - > >>>managed c++ > >>> > >>> > >>>On 2004-11-19 15:41, Stoyan Damov wrote: > >>> > >>> > >>>>Are you new to .NET? AFAIK no .NET-enabled language except C++ > >>>>supports object const-ness. It is interesting though that > >> > >>you managed > >> > >>>>to compile the class with the MC++. In .NET (as opposed to > >> > >>C++, where > >> > >>>>const rules) you'll have to learn to deal with readonly (initonly) > >>>>fields, get/set properties, read-only collections (or similar > >>>>patterns) to prevent object clients to modify the instance, > >> > >>etc., etc. > >> > >>> > >>>>IMHO losing const is a drawback but this has been discussed > >> > >>many times > >> > >>> > >>>>and I don't want to start any religious wars. > >>> > >>> > >>>Maybe I wasn't clear enough. Or perhaps I should make the question > >>>different. I wonder why the MC++ compiler allows the > >> > >>constructs as below > >> > >>>and generates the same IL code for both of the methods. > >>> > >>>Regards, > >>>Bogdan > >>> > >>> > >>> > >>>>-----Original Message----- > >>>>From: Unmoderated discussion of advanced .NET topics. > >>>>[mailto:[EMAIL PROTECTED] On Behalf Of Bogdan > >>>>Lachendro > >>>>Sent: Friday, November 19, 2004 4:11 PM > >>>>To: [EMAIL PROTECTED] > >>>>Subject: [ADVANCED-DOTNET] const modifier in method parameter - > >>>>managed > >>>>c++ > >>>> > >>>> > >>>>Hi, > >>>> > >>>>Lets say I have a class: > >>>> > >>>> public __gc class MyClass > >>>> { > >>>> public: > >>>> > >>>> void foo(MyClass* const a) > >>>> { > >>>> } > >>>> > >>>> void foo(const MyClass* a) > >>>> { > >>>> } > >>>> }; > >>>> > >>>>Why is the IL code generated by MVC++ the same for both > >> > >>those methods? > >> > >>> > >>>>Is there any way to use such method in C# code? Currently I have: > >>>> > >>>>e:\classlibrary1\class1.cs(34,13): error CS0121: The call > >> > >>is ambiguous > >> > >>> > >>>>between the following methods or properties: > >>>>'ManagedClass.MyClass.foo(ManagedClass.MyClass)' and > >>>>'ManagedClass.MyClass.foo(ManagedClass.MyClass)' > >>>> > >>>>Thanks, > >>>> > >>>>Regards, > >>>>Bogdan > >>>> > >>>>=================================== > >>>>This list is hosted by DevelopMentorŽ http://www.develop.com Some > >>>>.NET courses you may be interested in: > >>>> > >>>>Essential .NET: building applications and components with > >> > >>C# November > >> > >>>>29 > >>>>- December 3, in Los Angeles > http://www.develop.com/courses/edotnet > >>>> > >>>>View archives and manage your subscription(s) at > >>>>http://discuss.develop.com > >>>> > >>>>=================================== > >>>>This list is hosted by DevelopMentorŽ http://www.develop.com Some > >>>>.NET courses you may be interested in: > >>>> > >>>>Essential .NET: building applications and components with > >> > >>C# November > >> > >>>>29 - December 3, in Los Angeles > >> > >>http://www.develop.com/courses/edotnet > >> > >>>>View archives and manage your subscription(s) at > >>>>http://discuss.develop.com > >>>> > >>>> > >>> > >>> > >>> > >>>-- > >>>Bogdan Lachendro mailto:lachu(at)poczta.fm > >>>http://www.the.king.of.pl TEL +48606318657 UIN 66844735 GG 1469796 > >>> A wise man changes his mind, a fool never will... > >>> > >>>=================================== > >>>This list is hosted by DevelopMentorŽ > >> > >>http://www.develop.com Some .NET > >> > >>>courses you may be interested in: > >>> > >>>Essential .NET: building applications and components with > >> > >>C# November 29 > >> > >>>- December 3, in Los Angeles http://www.develop.com/courses/edotnet > >>> > >>>View archives and manage your subscription(s) at > >>>http://discuss.develop.com > >>> > >>>=================================== > >>>This list is hosted by DevelopMentorŽ http://www.develop.com > >>>Some .NET courses you may be interested in: > >>> > >>>Essential .NET: building applications and components with C# > >>>November 29 - December 3, in Los Angeles > >>>http://www.develop.com/courses/edotnet > >>> > >>>View archives and manage your subscription(s) at > >> > >>http://discuss.develop.com > >> > >>> > >> > >>-- > >>Bogdan Lachendro mailto:lachu(at)poczta.fm > >>http://www.the.king.of.pl TEL +48606318657 UIN 66844735 GG 1469796 > >> A wise man changes his mind, a fool never will... > >> > >>=================================== > >>This list is hosted by DevelopMentorŽ http://www.develop.com > >>Some .NET courses you may be interested in: > >> > >>Essential .NET: building applications and components with C# > >>November 29 - December 3, in Los Angeles > >>http://www.develop.com/courses/edotnet > >> > >>View archives and manage your subscription(s) at > >>http://discuss.develop.com > >> > >> > > > > > > =================================== > > This list is hosted by DevelopMentorŽ http://www.develop.com > > Some .NET courses you may be interested in: > > > > Essential .NET: building applications and components with C# > > November 29 - December 3, in Los Angeles > > http://www.develop.com/courses/edotnet > > > > View archives and manage your subscription(s) at > http://discuss.develop.com > > > > > > > -- > Bogdan Lachendro mailto:lachu(at)poczta.fm > http://www.the.king.of.pl TEL +48606318657 UIN 66844735 GG 1469796 > A wise man changes his mind, a fool never will... > > =================================== > This list is hosted by DevelopMentorŽ http://www.develop.com > Some .NET courses you may be interested in: > > Essential .NET: building applications and components with C# > November 29 - December 3, in Los Angeles > http://www.develop.com/courses/edotnet > > View archives and manage your subscription(s) at > http://discuss.develop.com > > =================================== This list is hosted by DevelopMentorŽ http://www.develop.com Some .NET courses you may be interested in: Essential .NET: building applications and components with C# November 29 - December 3, in Los Angeles http://www.develop.com/courses/edotnet View archives and manage your subscription(s) at http://discuss.develop.com