小编so6*_*1pi的帖子

多个0长度数组具有相同的地址?

以下代码为两者打印出相同的地址ab使用GCC(未与其他编译器一起测试):

#include <stdio.h>

void show() {
    {
        static char a[0];
        printf("%p\n", a);
    }
    {
        static char b[0];
        printf("%p\n", b);
    }
}

int main() {
    show();
}
Run Code Online (Sandbox Code Playgroud)

我的问题是C标准是否允许多个变量具有相同的地址,或者这只是GCC的扩展?

c gcc

12
推荐指数
2
解决办法
1107
查看次数

从已删除复制构造函数的类继承

我有一个类base只包含私有默认构造函数和公共删除的复制构造函数,没有别的.

class base {
private:
    base() = default;

public:
    base(const base&) = delete;
};
Run Code Online (Sandbox Code Playgroud)

如果我尝试继承base并创建类的实例,derived如下所示,g ++ 4.8.2不会编译我的代码,但VC++ 2013会编译.

class derived : public base {
private:
    derived() = default;
};

derived x;
Run Code Online (Sandbox Code Playgroud)

那么,它是g ++或VC++ 2013中的一个错误,只是忽略了什么?

这是完整的代码......

class base {
private:
    base() = default;

public:
    base(const base&) = delete;
};

class derived : public base {
private:
    derived() = default;
};

derived x;

int main() { 
}
Run Code Online (Sandbox Code Playgroud)

...和g ++错误消息.

main.cpp:12:5: error: 'constexpr derived::derived()' is private
     derived() …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-bug c++11 visual-studio-2013 g++4.8

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

Concepts 会取代 SFINAE 吗?

可能在 C++ 标准(C++17 或 C++20)中的概念。

所以我想知道这个新功能是否可以完全取代SFINAE,或者它只是一个带有很好的错误报告和类型检查的SFINAE的小版本。

是否有 SFINAE 是唯一选择而不是使用 Concepts 的情况?

c++

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

在类中初始化字符数组

当我用g ++ 4.8.2编译下面的代码时,我收到一个错误.

#include <iostream>

using namespace std;

class test {
public:
    void print() {
        cout << str << endl;
    }

private:
    char str[] = "123456789"; // error: initializer-string for array of chars
                              // is too long
};

int main() {
    char x[] = "987654321";
    cout << x << endl;

    test temp;
    temp.print();
}
Run Code Online (Sandbox Code Playgroud)

为什么我得到这个错误,是什么样的区别str在课堂上testxmain功能?

c++ g++

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

标签 统计

c++ ×3

c ×1

c++11 ×1

compiler-bug ×1

g++ ×1

g++4.8 ×1

gcc ×1

visual-studio-2013 ×1