gpt4 book ai didi

c++ - ISO 标准声明 $3.1 : 1st point from n3242 doc

转载 作者:搜寻专家 更新时间:2023-10-31 01:57:31 30 4
gpt4 key购买 nike

ISO 标准 $3.1 的声明:第 1 点

n3242 说:

A declaration (Clause 7) may introduce one or more names into a translation unit or redeclare names introduced by previous declarations. If so, the declaration specifies the interpretation and attributes of these names. A declaration may also have effects including: — a static assertion (Clause 7), — controlling template instantiation (14.7.2), — use of attributes (Clause 7), and — nothing (in the case of an empty-declaration).

ISO 2003 DOC 说:

A declaration (clause 7) introduces names into a translation unit or
redeclares names introduced by previous declarations. A declaration
specifies the interpretation and attributes of these names.

谁能解释一下有什么区别。

他们说“声明也可能有影响,包括:”......任何人都可以从编程的角度解释这些影响是什么

请用编程方式解释这些效果(用示例程序)?

最佳答案

我相信只是一些新特性改变了声明的工作方式——在细节上。

比如这不只是引入一些名字,还会影响代码的编译。

struct A
{
int x;
};

struct B
{
A a;
static_assert(sizeof(a) > 10, "Wrong member size");
};

我们还有空声明 (我相信它只能在类中使用) :

struct C
{
void f()
{ }; // Semicolon here is allowed, but is an empty declaration
};

空声明是引入名称的声明(因为它是空的)。

我想也弄清楚了“影响模板实例化”:

template<class T>
class X
{
// some members
};

extern template class X<int>;
extern template class X<char>;

告诉编译器 X<int>X<char>将在其他地方实例化,不必在此处生成。

关于c++ - ISO 标准声明 $3.1 : 1st point from n3242 doc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5495936/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com