标签: standards

为什么C++ 11将不存在的值定义为默认值?

以下摘录自cppreference链接1cppreference链接2:

enum codecvt_mode
{
    consume_header = 4,
    generate_header = 2,
    little_endian = 1
};

template
<
    class Elem,
    unsigned long Maxcode = 0x10ffff,
    std::codecvt_mode Mode = (std::codecvt_mode)0
>
class codecvt_utf8_utf16 : public std::codecvt<Elem, char, std::mbstate_t>;
Run Code Online (Sandbox Code Playgroud)

显然,0枚举类型的定义不明确codecvt_mode.C++标准可能会故意保留实现定义的默认值.

但是,我认为实现定义的默认值对用户来说可能是模糊的.

为什么C++ 11定义

std::codecvt_mode Mode = (std::codecvt_mode)0

而不是

std::codecvt_mode Mode = std::little_endian

c++ standards language-design default-value c++11

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

在C++ 17中声明一个大小为0的数组是否合法?

int main()
{
    int n[0];   
}
Run Code Online (Sandbox Code Playgroud)

使用Clang 4.0,上面的代码是可以的.

但是,http://en.cppreference.com/w/cpp/language/array说:

数组的大小必须大于零.

根据C++ 17标准声明大小为0的数组是否合法?

c++ arrays standards c++17

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

URL查询字符串中的字段名称有多个值?

Python3 urllib.parse.parse_qs奇怪地返回string, list<string>查询字符串的字典:

>>> import urllib.parse as p
>>> url = p.urlparse("http://exam.ple/path?query=string&yes=no")
ParseResult(scheme='http', netloc='exam.ple', path='/path', params='', query='query=string&yes=no', fragment='')

>>> p.parse_qs(url.query)
{'query': ['string'], 'yes': ['no']}
Run Code Online (Sandbox Code Playgroud)

该函数的文档说:

字典键是唯一的查询变量名称,而值是每个名称的值列表。

我可以以某种方式利用此“值列表”功能吗?

无论是维基百科,也不堆栈溢出,也不IETF规范有关“多”或字段的值“列表”提任何东西,我找不到任何这样的语法:

>>> p.parse_qs(p.urlparse("http://exam.ple/path?query=string&yes=no/a=0").query)
{'query': ['string'], 'yes': ['no/a=0']}
>>> p.parse_qs(p.urlparse("http://exam.ple/path?query=string@yes=no").query)
{'query': ['string@yes=no']}
>>> p.parse_qs(p.urlparse("http://exam.ple/path?query=string;yes=no").query)
{'query': ['string'], 'yes': ['no']}
>>> p.parse_qs(p.urlparse("http://exam.ple/path?query=string,yes=no").query)
{'query': ['string,yes=no']}
Run Code Online (Sandbox Code Playgroud)

似乎没有分隔符会导致键的值包含多个字符串。可能吗?

python standards specifications urllib query-string

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

浮点IEEE保证

我想知道,对于以下情况,如果IEEE标准使用符合标准的任何cpu保证每种可能的情况(不包括NaN和无穷大):

  • 交换性:x#y = y #x
  • 相关性:(x#y)#z = x#(y#z)
  • x - x = 0(x - x == 0.0f总是返回true吗?)
  • x*0 = 0(x*0.0f == 0.0f总是返回true吗?)
  • x*1 = x(x*1.0f == x总是返回true吗?)
  • x/x = 1.0f(x/x == 1.0f总是返回true?当然除了x = 0)

(#表示所有操作:+ - */)

floating-point standards operations ieee

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

HTML规范的哪一部分导致角括号内的URL被解析为带有属性的<http:>元素?

这是我的HTML代码.

<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<head>
    <title>Bar</title>
    <script>
    window.onload = function() {
        console.log(document.body.innerHTML)
    }
    </script>
</head>
<body>
<http://www.example.com/foo/bar/baz.html>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我将此代码保存在一个名为的文件中bar.html,然后使用Firefox或Chrome打开该页面.这是我在控制台中看到的输出.

<http: www.example.com="" foo="" bar="" baz.html="">


</http:>
Run Code Online (Sandbox Code Playgroud)

现在我明白我的代码是不正确的,因为它有一个包含在<和中的URL >.

我想了解浏览器究竟是如何将其解析为一个http:标记,其中部分URL被解释为HTML属性.

HTML规范的某些部分是否会导致这种行为?如果是这样,你能引用HTML规范的这些部分吗?

html url standards html5 specifications

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

HTML:文本是否需要容器元素符合标准?

是否符合以下W3C标准:

<div>
  <h3>Heading</h3>
  This is the text for this section.
</div>
Run Code Online (Sandbox Code Playgroud)

或者文本是否需要容器元素?

<div>
  <h3>Heading</h3>
  <p>This is the text for this section.</p>
</div>
Run Code Online (Sandbox Code Playgroud)

第一个例子不适合我,但内容编辑问我,我意识到我不知道它是否可以.

html standards w3c semantic-markup

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

没有va_*使用省略号是否可以接受?

我经常看到关于省略号的教程,例如:

void foo(int i, ...){
    int *p = &i;
    ++p;
    //...
}
Run Code Online (Sandbox Code Playgroud)

而我只是想知道,这种方法在标准方面是否正确?我可以使用没有va_*宏的可变参数吗?也许某些实现以相反的顺序存储args,或类似的东西.

UPD: "使用"=可移植且可靠地传递args

c c++ standards

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

是否在C ++标准中定义了memcpy(dest,src,0)?

这个问题许多更多的是问,如果一个呼叫本网站上的许多问题中的memcpy()是与零值指定的长度\大小有效。回答时,每个人都引用当前的C标准(在本例中为C17 ISO / IEC9899:2017第283页),

如果声明为as的参数size_t n指定函数数组的长度,则对该函数n的调用的值可以为零。除非在本节中对特定功能的描述中另有明确说明,否则此类调用上的指针参数仍应具有有效值,如7.1.4中所述。在这样的调用中,找不到字符的函数没有出现,比较两个字符序列的函数返回零,而复制字符的函数则复制零字符。

但是,这来自C标准,C ++标准引用。

在当前的C ++标准(即C ++ 17 ISO / IEC 14882)的何处列出了相同的定义?CC ++具有两种不同的标准(和语言),据我所知,您不能引用一个标准并期望在另一个标准中存在相同的规则/行为。

如果C标准中的这种引用在C ++中有效而未在标准中明确说明,那么有人可以提供一个源来备份CC ++之间的这种连接吗?

c++ standards memcpy

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

为什么 C++ 不提供先进先出的单链表?

在C++标准库中,list是双向链表;forward_list是单链表,但仅支持后进先出。

然而,先进先出单链表因其比其他类似列表的容器(除了forward_list)低的空间开销而被广泛使用。所以我想知道:

为什么 C++ 不提供先进先出的单链表?

c++ standards containers stl c++20

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

在 C++ 标准中,格式良好是否意味着代码可以编译?

C++ 标准定义well-formed programs

根据语法规则、可诊断语义规则和一定义规则构造的C++程序

我想知道是否所有格式良好的程序都能编译(如果不是这样,什么类型的错误会导致格式良好的程序和可编译问题之间存在差异)。例如,包含歧义错误的程序会被认为是格式良好的吗?

c++ standards well-formed language-lawyer

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