小编the*_*oyn的帖子

程序退出期间的函数局部静态初始化

标准对程序退出期间的函数局部静态初始化有什么看法? 编辑:为了清楚起见,我的意思是代码示例中的情况 - 本地静态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 更感兴趣,如果它在这个主题上有什么不同的话。

c++ static object-lifetime language-lawyer

15
推荐指数
1
解决办法
209
查看次数

是否可以通过角度2有条件地关闭html标签?

我需要这样的东西:

<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)

html angular

1
推荐指数
1
解决办法
791
查看次数

标签 统计

angular ×1

c++ ×1

html ×1

language-lawyer ×1

object-lifetime ×1

static ×1