转换为指向模板的指针是否会实例化该模板?
static_cast*>(0) - 这是否以 int 类型实例化 the_template ? 询问的原因是以下代码,该代码在使用 Clang 和 GCC 4.4.5 链接时会出错,并带有对 chec…
指向成员的指针是非法引用吗?
假设我有: // This is all valid in C++11. struct Foo { int i = 42; int& j = i; }; // Let's take a pointer to the member "j". auto b = &Foo::…
C++03 是 C++ 的新版本吗?标准还是只是 C++98 的技术勘误表 (TC)?
我很确定我在某个权威来源上读到过(我相信是在 WG21 页面上),C++03 不是 C++98 的技术勘误表,而是一个新的版本。 C++ 标准的发布。 但尽管如此,…
什么是“字节”?在 C / C++
例如,以下是 fread 的参考: size_t fread ( void * ptr, size_t size, size_t count, FILE * stream ); 读取 count 元素的数组,每个元素的大小为“…
是否比较两个 void 指针到 C++ 中定义的不同对象?
受到关于动态转换为 void* 的这个答案的启发: ... 布尔 eqdc(B* b1, B *b2) { 返回dynamic_cast(b1)==dynamic_cast(b2); } ... int main() { DD *dd …
使用 C89 和 C99 编译时,哪些 C 程序在运行时的行为有所不同?
我发现以下代码片段(我认为在维基百科中)在识别 C++ 注释时创建了一个与未识别时不同的运行时: int a = 4 //* This is a comment, but where does …
在哪里可以找到涵盖 K&R1/2、C89-C1X 及其起源的 C(和/或 C++)关键字列表?
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers. 要求我们推荐或查找工具、库或最喜欢的…
是否有使用不带大括号的 switch 语句的有用案例?
在 H&S5 中,我遇到了“最奇怪的”switch 语句(8.7.1,第 277 页),它没有使用大括号。 示例如下: switch (x) default: if (prime(x)) case 2: cas…
不明确的成员访问表达式:Clang 是否拒绝有效代码?
我有一些代码,出于这个问题的目的,归结为 template class TemplateClass : public T { public: void method() {} template static void static_meth…
常量 32768 和 0x8000 之间的类型差异会产生影响吗?
该标准指定像 0x8000(大于有符号整数的大小)这样的十六进制常量是无符号的(就像八进制常量一样),而像 32768 这样的十进制常量是有符号长整型。 …
动态库是否会破坏 C++标准?
C++ 标准 3.6.3 规定 静态持续时间的初始化对象的析构函数作为从 main 返回的结果和调用 exit 的结果而被调用 在 Windows 上,您有 >FreeLibrary和lin…
结构体成员初始化之间是否存在序列点?
结构成员初始化表达式之间是否存在序列点? 例如,下面的代码是否总是打印“a,b”? #include typedef struct { char *bytes; int position; int len…
重载逗号运算符*真的*会影响其操作数的求值顺序吗?
逗号运算符保证从左到右的计算顺序。 [n3290: 5.18/1]:逗号运算符从左到右分组。 表达式: 赋值表达式 表达式,赋值表达式 一对用逗号分隔的表达式从…
重载后缀和前缀运算符
请考虑以下代码: #include using namespace std; class Digit { private: int m_digit; public: Digit(int ndigit = 0) { m_digit = ndigit; } Digit…
指向无效内存时 sizeof(*ptr) 是否未定义行为?
我们都知道取消引用空指针或指向未分配内存的指针会调用未定义的行为。 但是,在传递给 sizeof 的表达式中使用时,规则是什么? 例如: int *ptr = 0;…