<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to keywords-out</title><link>https://sourceforge.net/p/asil/wiki/keywords-out/</link><description>Recent changes to keywords-out</description><atom:link href="https://sourceforge.net/p/asil/wiki/keywords-out/feed" rel="self"/><language>en</language><lastBuildDate>Thu, 20 Feb 2014 19:13:35 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/asil/wiki/keywords-out/feed" rel="self" type="application/rss+xml"/><item><title>keywords-out modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/keywords-out/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v4
+++ v5
@@ -9,5 +9,5 @@

 ~~~~
 :::text
-\out\ /VariableName/
+(\ref\ | \out\ | \byvalue\) /identifier/
 ~~~~
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Thu, 20 Feb 2014 19:13:35 -0000</pubDate><guid>https://sourceforge.netd2ec01affa5d306c7a1ec1eaa6f6bfe8f440ff80</guid></item><item><title>keywords-out modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/keywords-out/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v3
+++ v4
@@ -1,4 +1,4 @@
-The **out** and **[ref](keywords-ref)** keywords do pretty much the same thing: Tell the compiler than a type must be passed by reference.  There are difference though.  The **[ref](keywords-ref)** keyword always adds a reference layer so that even if the type already is a reference type, it gets an extra layer of reference.  The **out** keyword will only add a reference layer if the type defaults to a by-value type.  Furthermore, **out** can only be used on **[var](keywords-var)** parameters that aren't declared as **[readonly](keywords-readonly)**.  Finally, **out** tells the compiler the procedure the **out** parameter is being passed to will initialize the variable.  This allows the procedure to return an extra value.  Please note that **out** can't be directly combined with **[byvalue](keywords-byvalue)** or **[ref](keywords-ref)**.  For that, you need a **[typealias](keywords-typealias)** as described in [Type aliases].  If a formal parameter was declared with **[out](keywords-out)**, the corresponding actual parameter must be preceded with **out**.
+The **out** and **[ref](keywords-ref)** keywords do pretty much the same thing: Tell the compiler than a type must be passed by reference.  There are difference though.  The **[ref](keywords-ref)** keyword always adds a reference layer so that even if the type already is a reference type, it gets an extra layer of reference.  The **out** keyword will only add a reference layer if the type defaults to a by-value type.  Furthermore, **out** can only be used on **[var](keywords-var)** parameters that aren't declared as **[readonly](keywords-readonly)**.  Finally, **out** tells the compiler the procedure the **out** parameter is being passed to will initialize the variable.  This allows the procedure to return an extra value.  Please note that **out** can't be directly combined with **[byvalue](keywords-byvalue)** or **[ref](keywords-ref)**.  For that, you need a **[typealias](keywords-typealias)** as described in [Type aliases].  If a formal parameter was declared with **out**, the corresponding actual parameter must be preceded with **out**.

 ~~~~
 :::text
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Thu, 20 Feb 2014 19:13:04 -0000</pubDate><guid>https://sourceforge.net870e8370dfe2fd2af7f1a2a6706aec20c1532638</guid></item><item><title>keywords-out modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/keywords-out/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -1,8 +1,13 @@
-The **out** and **[ref](keywords-ref)** keywords do pretty much the same thing: Tell the compiler than a type must be passed by reference.  There are difference though.  The **[ref](keywords-ref)** keyword always adds a reference layer so that even if the type already is a reference type, it gets an extra layer of reference.  The **out** keyword will only add a reference layer if the type defaults to a by-value type.  Furthermore, **out** can only be used on **[var](keywords-var)** parameters that aren't declared as **[readonly](keywords-readonly)**.  Finally, **out** tells the compiler the procedure the **out** parameter is being passed to will initialize the variable.  This allows the procedure to return an extra value.  Please note that **out** can't be directly combined with **[byvalue](keywords-byvalue)** or **[ref](keywords-ref)**.  For that, you need a **[typealias](keywords-typealias)** as described in [Type aliases].
+The **out** and **[ref](keywords-ref)** keywords do pretty much the same thing: Tell the compiler than a type must be passed by reference.  There are difference though.  The **[ref](keywords-ref)** keyword always adds a reference layer so that even if the type already is a reference type, it gets an extra layer of reference.  The **out** keyword will only add a reference layer if the type defaults to a by-value type.  Furthermore, **out** can only be used on **[var](keywords-var)** parameters that aren't declared as **[readonly](keywords-readonly)**.  Finally, **out** tells the compiler the procedure the **out** parameter is being passed to will initialize the variable.  This allows the procedure to return an extra value.  Please note that **out** can't be directly combined with **[byvalue](keywords-byvalue)** or **[ref](keywords-ref)**.  For that, you need a **[typealias](keywords-typealias)** as described in [Type aliases].  If a formal parameter was declared with **[out](keywords-out)**, the corresponding actual parameter must be preceded with **out**.

 ~~~~
 :::text
 /StartOfDeclarationSequenceForProcedure/ \var\ \out\ /identifier/ /EndOfDeclarationSequenceForProcedure/
 ~~~~

-For more on what can be in a declaration sequence, see [Declaration sequences](Appendices-Terms-Declaration sequences).
+For more on what can be in a declaration sequence, see [Declaration sequences](Appendices-Terms-Declaration sequences).  The following sample shows how to use **out** for an actual parameter.
+
+~~~~
+:::text
+\out\ /VariableName/
+~~~~
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Thu, 20 Feb 2014 19:12:41 -0000</pubDate><guid>https://sourceforge.net440c9de0891791d69488ada5419123eb9d22d85f</guid></item><item><title>keywords-out modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/keywords-out/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -1,6 +1,7 @@
 The **out** and **[ref](keywords-ref)** keywords do pretty much the same thing: Tell the compiler than a type must be passed by reference.  There are difference though.  The **[ref](keywords-ref)** keyword always adds a reference layer so that even if the type already is a reference type, it gets an extra layer of reference.  The **out** keyword will only add a reference layer if the type defaults to a by-value type.  Furthermore, **out** can only be used on **[var](keywords-var)** parameters that aren't declared as **[readonly](keywords-readonly)**.  Finally, **out** tells the compiler the procedure the **out** parameter is being passed to will initialize the variable.  This allows the procedure to return an extra value.  Please note that **out** can't be directly combined with **[byvalue](keywords-byvalue)** or **[ref](keywords-ref)**.  For that, you need a **[typealias](keywords-typealias)** as described in [Type aliases].

 ~~~~
+:::text
 /StartOfDeclarationSequenceForProcedure/ \var\ \out\ /identifier/ /EndOfDeclarationSequenceForProcedure/
 ~~~~

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Thu, 20 Feb 2014 18:06:32 -0000</pubDate><guid>https://sourceforge.nete9ed43b422e701600dc3f11a360b50fa82040e21</guid></item><item><title>keywords-out modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/keywords-out/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;The &lt;strong&gt;out&lt;/strong&gt; and &lt;strong&gt;&lt;a class="" href="../keywords-ref"&gt;ref&lt;/a&gt;&lt;/strong&gt; keywords do pretty much the same thing: Tell the compiler than a type must be passed by reference.  There are difference though.  The &lt;strong&gt;&lt;a class="" href="../keywords-ref"&gt;ref&lt;/a&gt;&lt;/strong&gt; keyword always adds a reference layer so that even if the type already is a reference type, it gets an extra layer of reference.  The &lt;strong&gt;out&lt;/strong&gt; keyword will only add a reference layer if the type defaults to a by-value type.  Furthermore, &lt;strong&gt;out&lt;/strong&gt; can only be used on &lt;strong&gt;&lt;a class="" href="/p/asil/wiki/keywords-var/"&gt;var&lt;/a&gt;&lt;/strong&gt; parameters that aren't declared as &lt;strong&gt;&lt;a class="" href="../keywords-readonly"&gt;readonly&lt;/a&gt;&lt;/strong&gt;.  Finally, &lt;strong&gt;out&lt;/strong&gt; tells the compiler the procedure the &lt;strong&gt;out&lt;/strong&gt; parameter is being passed to will initialize the variable.  This allows the procedure to return an extra value.  Please note that &lt;strong&gt;out&lt;/strong&gt; can't be directly combined with &lt;strong&gt;&lt;a class="" href="/p/asil/wiki/keywords-byvalue/"&gt;byvalue&lt;/a&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;a class="" href="../keywords-ref"&gt;ref&lt;/a&gt;&lt;/strong&gt;.  For that, you need a &lt;strong&gt;&lt;a class="" href="../keywords-typealias"&gt;typealias&lt;/a&gt;&lt;/strong&gt; as described in &lt;a class="alink" href="/p/asil/wiki/Type%20aliases/"&gt;[Type aliases]&lt;/a&gt;.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;StartOfDeclarationSequenceForProcedure&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="n"&gt;out&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;identifier&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;EndOfDeclarationSequenceForProcedure&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;For more on what can be in a declaration sequence, see &lt;a class="" href="../Appendices-Terms-Declaration%20sequences"&gt;Declaration sequences&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Thu, 20 Feb 2014 18:03:05 -0000</pubDate><guid>https://sourceforge.net4bec79408d1801a7434edf42e62491b76848b6e6</guid></item></channel></rss>