相关疑难解决方法(0)

功能参数破坏的排序

根据C++ 14 [expr.call]/4:

参数的生命周期在定义它的函数返回时结束.

这似乎意味着参数的析构函数必须在调用函数的代码继续使用函数的返回值之前运行.

但是,此代码显示不同:

#include <iostream>

struct G
{
    G(int): moved(0) { std::cout << "G(int)\n"; }
    G(G&&): moved(1) { std::cout << "G(G&&)\n"; }
    ~G() { std::cout << (moved ? "~G(G&&)\n" : "~G()\n"); }

    int moved;
};

struct F
{
    F(int) { std::cout << "F(int)\n"; }
    ~F() { std::cout << "~F()\n"; }
};

int func(G gparm)
{
    std::cout << "---- In func.\n";
    return 0;
}


int main()
{
    F v { func(0) };
    std::cout << "---- End of main.\n"; …
Run Code Online (Sandbox Code Playgroud)

c++ function-calls language-lawyer sequencing c++14

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

标签 统计

c++ ×1

c++14 ×1

function-calls ×1

language-lawyer ×1

sequencing ×1