Update docs for expression parsing improvements

This commit is contained in:
Olly Betts 2022-03-04 16:36:04 +13:00
commit 8f54f6180a
2 changed files with 13 additions and 7 deletions

View file

@ -3057,22 +3057,24 @@ is expected in an interface file. For example:
<div class="code"> <div class="code">
<pre> <pre>
void foo(vector&lt;int&gt; *a, int n); void foo(vector&lt;int&gt; *a, int n);
void bar(list&lt;int, 100&gt; *x); void bar(std::array&lt;int, 100&gt; *x);
</pre> </pre>
</div> </div>
<p> <p>
There are some restrictions on the use of non-type arguments. Simple literals There are some restrictions on the use of non-type arguments. Simple literals
are supported, and so are some constant expressions. However, use of '&lt;' are supported, and so are most constant expressions. However, there are some
and '&gt;' within a constant expressions currently is not supported by SWIG limitations on the use of '&lt;' and '&gt;' in constant expressions (but note
('&lt;=' and '&gt;=' are though). For example: that '&lt;=' and '&gt;=' are fully supported). For example:
</p> </p>
<div class="code"> <div class="code">
<pre> <pre>
void bar(list&lt;int, 100&gt; *x); // OK void bar(std::array&lt;int, 100&gt; *x); // OK
void bar(list&lt;int, 2*50&gt; *x); // OK void bar(std::array&lt;int, 2*50&gt; *x); // OK
void bar(list&lt;int, (2&gt;1 ? 100 : 50)&gt; *x) // Not supported void bar(std::array&lt;int, (1&lt;2 ? 100 : 50)&gt; *x) // OK
void bar(std::array&lt;int, 1&lt;2 ? 100 : 50&gt; *x) // Not supported
void bar(std::array&lt;int, (2&gt;1 ? 100 : 50)&gt; *x) // Not supported
</pre> </pre>
</div> </div>

View file

@ -23,4 +23,8 @@ isPointer = false
int a; int a;
int test2(int b = 9%a) { return b; } int test2(int b = 9%a) { return b; }
/* Example from manual. */
#include <array>
void bar(std::array<int, (1<2? 100 : 50)> *x) { }
%} %}