views:

74

answers:

1

Hello

I know that the C++/CLI code

void foo(Bar^% x);

transforms into

Void foo(ref Bar x);

What is the C++/CLI code that becomes

Void foo(out Bar x);

?

+3  A: 

There is no such specific syntax in C++/CLI. I think you can get fairly close by adding the OutAttribute to modify the parameter. But I'm not sure that achieves the exact same semantics as C# out.

The concept of out is for the most part limited to C#. The CLR really only sees ref parameters. The out concepts is achieved via a mod opt I believe and most languages ignore it.

JaredPar
Yup, same for VB.NET
Hans Passant
It is the pass-by-reference syntax with `OutAttribute` applied to the parameter as you say. It creates the exact same metadata as with C# `out` parameters. By "not... the exact same semantics" are you referring to the fact that in C# the parameter starts out uninitialized and must be definitely assigned before the function returns?
Ben Voigt