language-lawyer 相关问题

有关编程语言和环境的正式或权威规范的复杂性的问题。

定义与标准库函数同名的宏

ISO C 对定义与标准库函数同名的宏有什么限制吗? 例如: #定义feof ... 上面的有问题吗? 如果是的话,换个c怎么样...

回答 1 投票 0

gcc 和 clang 是否意外地放弃了 C99 序列点一致性?

背景: C99 6.5 §2 说: 在上一个和下一个序列点之间,对象的存储值最多应通过表达式的求值修改一次。此外,先验值

回答 1 投票 0

这个简单的 has-member SFINAE 技术符合吗?

我正在使用一种简单的(不是特别新的)技术来检查特定名称和类型的类成员是否存在。 以下代码在 Clang 中编译良好,但 MSVC 报告

回答 1 投票 0

可以定义宏来提供类似函数的排序吗?

考虑以下 C 代码: 常量整型数组[100]; 整数 i = 0; 整数x; int get_next(void) { 返回数组[i++]; } int foo(void) { 返回 get_next() + get_next(); } 假设 i == 0 wh...

回答 1 投票 0

将对原语的引用从 C++ 传递到 C 上下文是否是未定义的行为?

我想知道将 int 或 float 的引用从 C++ 传递到 C 的行为。所以被调用的函数需要一个 int,但我用 int& 调用这是定义的吗? 编译器会忽略...

回答 1 投票 0

std::reference_wrapper 的常量正确性

const std::reference_wrapper 的工作方式类似于引用或 T* const (演示): #包括 结构体S{ 无效运算符()() { i++; } 整数 i = 0; }; int main() { SS;

回答 1 投票 0

Kotlin 安全调用运算符用法

假设我有以下代码: 有趣的主(){ val 用户名:字符串? =“德米特里”//第1行 userName?.takeLast(2)?.reversed() // 第 2 行 用户名?.plus("kotlin").plus...

回答 3 投票 0

FLT_ROUNDS 与 fesetround() / fegetround() 的行为

关于中声明的FLT_ROUNDS宏,C标准中的脚注指出: 浮点加法的舍入模式由实现定义的

回答 1 投票 0

C++20 'char8_t' 与我们旧的 'char' 相同吗?

在CPP参考文档中, 我注意到 char 字符类型足够大,可以表示任何 UTF-8 八位 代码单元 (C++14 起) 对于 char8_t 输入 UTF-8 字符

回答 2 投票 0

是否允许修改C++11中operator[]返回的内部std::string缓冲区

标准中是否有任何规则违反了对operator[]返回的内部std::string缓冲区的修改,如下所示: 无效 foo(char* buf) { buf[1] = 's'; } std::string str = "str";

回答 1 投票 0

在前向声明中自动推导返回类型并与旧函数语法混合

简介 在 C++11 中,可以声明一个函数,例如 自动 times2(double num) -> double; // A 并将其定义为 double times2(double num) { // B 返回数字*2; } A、B 对也可以是

回答 1 投票 0

左值到右值转换的结果删除 cv 限定符的示例是什么?

在左值到右值转换下,C++23 标准表示([conv.lval]#1,强调我的): 非函数、非数组类型 T 的左值可以转换为纯右值。44 如果 T 是不完整类型,则

回答 1 投票 0

为什么在函数原型中使用“[*]”而不是“[]”?

以下是添加花哨的 * 星形语法以在函数原型中声明数组类型的基本原理 - 只是为了在我们进入问题之前进行澄清: 一个函数

回答 2 投票 0

从它自己的参数递归调用main(使用VLA滥用sizeof)是标准C99吗?

免责声明:我的问题根本不实用,更多的是关于两个代码的问题,据称这些代码滥用了规则并在某种程度上进行了编译(根据编译或多或少的警告/错误......

回答 1 投票 0

重载和易失性

这预计将如何发挥作用? 结构体S{}; void foo(易失性S&); 无效 foo(S); int main() { 挥发性Sv; foo(v); } 编译器对此意见不一:MSVC 接受代码,而 Clang 和 GCC

回答 1 投票 0

什么东西负责显式的线路连接?

Python 分词器似乎不负责显式行连接。我的意思是,如果我们在 script.py 文件中编写以下代码: “一 \ 二” 然后输入 python -m tokenize ...

回答 1 投票 0

如果我根据 C++23 标准调用 `allocate_at_least(0)` 会发生什么?

如此处所示,allocate(0) 的行为未指定。 那么,如果我根据 C++23 标准调用 allocate_at_least(0) 会发生什么?行为是实现定义的,还是...

回答 1 投票 0

构成成员指针类型的`::`和`*`可以来自不同的宏扩展,还是必须以单个标记的形式出现?

考虑以下代码: #定义FOO A:: 结构A { 整数x; }; int FOO *ptr = &A::x; Clang(18.1.0,无标志)发出警告: :8:5:警告:“::”和“*”标记形成点...

回答 1 投票 0

为什么可变 lambda 转换为函数指针而不是调用operator()?

从 cppinsights 我们看到下面的代码行 lambda(); 是如何实现的由语言解释: const auto lambda = [] () 可变 {}; 无效 foo() { 拉姆达(); } 人们会天真地认为,

回答 1 投票 0

在const lambda 对象上调用非常量operator()

考虑以下代码片段(演示): const auto lambda = [] () 可变 {}; 使用 Lambda = decltype(lambda); static_assert(!std::is_function_v); static_assert(std::is_class_v<

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.