-<header data-kunai-mdinfo="{"meta": {"cpp": ["cpp26"]}, "sources": [{"id": "8ecc4d0f14af1d43fe031fb8813b2b45acc4a217", "source": "// C++23\nvoid f(int) {}\n\nint main() {\n int x; // \u30c7\u30d5\u30a9\u30eb\u30c8\u521d\u671f\u5316\u3002x\u306f\u4e0d\u5b9a\u5024 (indeterminate value) \u3092\u3082\u3064\n f(x); // \u5de6\u8fba\u5024\u304b\u3089\u53f3\u8fba\u5024\u3078\u306e\u5909\u63db\u304c\u672a\u5b9a\u7fa9\u52d5\u4f5c\u3092\u5f15\u304d\u8d77\u3053\u3059\n}\n"}, {"id": "4a0c4737e6a08d3c9e45aa4958b4810624dce709", "source": "// C++26\nvoid f(int) {}\n\nint main() {\n int x; // x\u306f\u30a8\u30e9\u30fc\u6027\u306e\u5024\u3092\u3082\u3064\n int y [[indeterminate]]; // \u610f\u56f3\u3057\u3066\u4e0d\u5b9a\u5024\u306b\u521d\u671f\u5316\u3055\u308c\u308b\u3053\u3068\u3092\u6307\u793a\n\n f(x); // \u30a8\u30e9\u30fc\u6027\u52d5\u4f5c (\u30a8\u30e9\u30fc\u6027\u306e\u5024\u306e\u8aad\u307f\u53d6\u308a)\n f(y); // \u672a\u5b9a\u7fa9\u52d5\u4f5c (\u4e0d\u5b9a\u5024\u306e\u8aad\u307f\u53d6\u308a)\n}\n"}, {"id": "d493f9173ce919031e6a194f87d399957ba5406f", "source": "#include <cassert>\n\nint g(bool b) {\n unsigned char c;\n unsigned char d = c; // \u30a8\u30e9\u30fc\u6027\u52d5\u4f5c\u3067\u306f\u306a\u3044\u3002d\u306f\u30a8\u30e9\u30fc\u6027\u306e\u5024\u3092\u3082\u3064\n\n assert(c == d); // \u5e38\u306b\u771f\u3001\u30a8\u30e9\u30fc\u6027\u52d5\u4f5c (\u6574\u6570\u6607\u683c)\n\n int e = d; // \u30a8\u30e9\u30fc\u6027\u52d5\u4f5c (\u578b\u5909\u63db)\n return b ? d : 0; // b\u304ctrue\u306e\u5834\u5408\u306b\u30a8\u30e9\u30fc\u6027\u52d5\u4f5c\n}\n\nint main() {\n int d1, d2;\n\n int e1 = d1; // \u30a8\u30e9\u30fc\u6027\u52d5\u4f5c\n int e2 = d1; // \u30a8\u30e9\u30fc\u6027\u52d5\u4f5c\n\n // \u51e6\u7406\u304c\u7d9a\u884c\u3057\u305f\u5834\u5408\u2026\n assert(e1 == e2); // \u5e38\u306b\u771f\u3001\u30a8\u30e9\u30fc\u6027\u52d5\u4f5c\u3067\u306f\u306a\u3044\u3002\n // \u30a8\u30e9\u30fc\u6027\u52d5\u4f5c\u306e\u7d50\u679c\u3067\u751f\u6210\u3055\u308c\u305f\u5024 (e1\u3068e2) \u306f\u3001\n // \u30a8\u30e9\u30fc\u6027\u306e\u5024\u3068\u306f\u307f\u306a\u3055\u308c\u306a\u3044\n assert(e1 == d1); // \u5e38\u306b\u771f\u3001\u30a8\u30e9\u30fc\u6027\u52d5\u4f5c\n assert(e2 == d1); // \u5e38\u306b\u771f\u3001\u30a8\u30e9\u30fc\u6027\u52d5\u4f5c\n\n // \u30a8\u30e9\u30fc\u6027\u52d5\u4f5c\u3067\u306f\u306a\u3044\u304c\n // d2\u306f\u30a8\u30e9\u30fc\u6027\u306e\u5024\u3092\u3082\u3064\n std::memcpy(&d2, &d1, sizeof(int));\n\n assert(e1 == d2); // \u5e38\u306b\u771f\u3001\u30a8\u30e9\u30fc\u6027\u52d5\u4f5c\n assert(e2 == d2); // \u5e38\u306b\u771f\u3001\u30a8\u30e9\u30fc\u6027\u52d5\u4f5c\n}\n"}, {"id": "7f024e2ac7c9eafd4b7e6b43f81576d40dbc8802", "source": "struct T {\n T() {}\n int x;\n};\n\nint h(T t [[indeterminate]]) {\n f(t.x); // \u5f8c\u8ff0\u306e\u95a2\u6570\u547c\u3073\u51fa\u3057\u306f\u3053\u3053\u3067\u672a\u5b9a\u7fa9\u52d5\u4f5c\u3092\u5f15\u304d\u8d77\u3053\u3059\n return 0;\n}\n\nint main() {\n int _ = h(T());\n}\n"}], "page_id": ["lang", "cpp26", "erroneous_behavior_for_uninitialized_reads"]}">
0 commit comments