小编Igo*_*gor的帖子

为什么析构函数可以更改常量对象的状态?

我知道不允许修改常量对象的状态,但是为什么析构函数可以更改此状态?

class A
{
public:
    ~A()
    {
        i = 2; //?
    }

    void test() const
    {
        //i = 1; //Not allowed
    }

    int i = 0;
};

int main()
{
    const A o;
    o.test();
}
Run Code Online (Sandbox Code Playgroud)

c++

20
推荐指数
2
解决办法
968
查看次数

Lambda作为模板变量

在与"变量模板"相关的一些调查中,我发现了一些奇怪的代码行为.标准是否说明了这种行为?

//Header.h
#pragma once

template<typename T>
auto myvar = []() -> T&{
    static T v;
    return v;
};

//Source.cpp
#include <iostream>
#include "Header.h"

void testFunction()
{
    std::cout << myvar<int>() << '\n';
}

//main.cpp
#include <iostream>
#include "Header.h"

void testFunction();

int main(int argc, char **argv) 
{
    myvar<int>() = 10;

    testFunction();

    std::cout << myvar<int>() << '\n';
}
Run Code Online (Sandbox Code Playgroud)

输出:

0
10
Run Code Online (Sandbox Code Playgroud)

我预计:

10
10
Run Code Online (Sandbox Code Playgroud)

c++ templates language-lawyer

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

为什么Xcode不为静态库生成dSYM

我尝试编译库并获取“ DWARF with dSYM File”格式的调试符号。这适用于动态库,但不适用于静态库。

XCode“快速帮助”说,“不需要dSYM文件,也不会为静态库或目标文件产品创建dSYM文件。[dwarf-with-dsym]”

谁能解释为什么?

谢谢

xcode dsym

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

C ++ lambda捕获结果

例如,我有下一个代码:

int func() 
{
    int i = 0;
    int j = 0;
    auto lambda{[&](){ return i; }};
    return lambda();
}
Run Code Online (Sandbox Code Playgroud)

是否j也将通过引用捕获或lambda仅捕获其使用的对象?

c++ lambda

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

标签 统计

c++ ×3

dsym ×1

lambda ×1

language-lawyer ×1

templates ×1

xcode ×1