标准对程序退出期间的函数局部静态初始化有什么看法?
编辑:为了清楚起见,我的意思是代码示例中的情况 - 本地静态b
是在构造另一个静态之后a
构造的(因此应该b
在之前销毁a
),但b
也在a
的析构函数期间构造,所以它应该立即销毁吗?后?优?
我没有设法找到有关此事的任何参考资料。
我想知道这种情况是 UB,还是应该有一些定义的行为?
下面的代码就是一个例子:
struct B{};
void foo()
{
static B b;
}
struct A
{
~A() { foo(); }
};
int main()
{
static A a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,A 的析构函数会在程序退出时发生(因为它具有静态存储),并且它会尝试构造 B 静态实例。
我对 C++17 更感兴趣,如果它在这个主题上有什么不同的话。
我需要这样的东西:
<tr>
somecode...
</tr *ngIf="some condition">
Run Code Online (Sandbox Code Playgroud)
这当然不受支持,但有没有办法实现这种行为?
我有一个表,我希望使用一个接收节点列表(List)的组件递归地添加行,迭代节点,打印它们并为每个节点的每个子节点调用自己大致如下:
main.component.html
<table class="table table-bordered">
<thead>
<tr>
<th>node names</th>
</tr>
</thead>
<tbody>
<tr app-rower [nodes]="nodes"></tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
rower.component.html:
<ng-container *ngFor="let node of tree">
<tr>
<td>
{{node.name}}
</td>
</tr *ngIf="node.hasChildren">
<tr *ngIf="node.hasChildren" app-rower [tree]="node.children" >
</tr *ngIf="!node.hasChildren">
</ng-container>
Run Code Online (Sandbox Code Playgroud)
所以最终的HTML将是:
<table>
<thead>
<tr>
<th>node's names</th>
</tr>
</thead>
<tbody>
<tr>
<td>node 1</td>
</tr>
<tr>
<td>node 1's child</td>
</tr>
<tr>
<td>node 1's grandchild</td>
</tr>
<tr>
<td>node 2</td>
</tr>
<tr>
<td>node 2's child</td>
</tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)