Skip to content

Commit 06325bc

Browse files
C++26対応として、C23標準ライブラリを追加 (#1657)
* C++26対応として、C23標準ライブラリを追加 * cuchar : 言語バージョンを修正 * グローバル修飾リスト : 増えたヘッダページを登録した
1 parent 6ce3ca0 commit 06325bc

102 files changed

Lines changed: 4757 additions & 20 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

GLOBAL_QUALIFY_LIST.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@
9999
* seconds[link /reference/chrono/duration_aliases.md]
100100
* weeks[link /reference/chrono/duration_aliases.md]
101101
* years[link /reference/chrono/duration_aliases.md]
102+
* <cinttypes>[link /reference/cinttypes.md]
102103
* <climits>[link /reference/climits.md]
103104
* <cmath>[link /reference/cmath.md]
104105
* <codecvt>[link /reference/codecvt.md]
@@ -139,6 +140,7 @@
139140
* <cstdlib>[link /reference/cstdlib.md]
140141
* <cstring>[link /reference/cstring.md]
141142
* <ctime>[link /reference/ctime.md]
143+
* <cuchar>[link /reference/cuchar.md]
142144
* <debugging>[link /reference/debugging.md]
143145
* <deque>[link /reference/deque/deque.md]
144146
* std::deque[link /reference/deque/deque.md]

lang/cpp26.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -575,4 +575,15 @@ C++26とは、2026年中に改訂される予定の、C++バージョンの通
575575

576576

577577
## 取り決め
578-
- C言語の参照をC17からC23に更新
578+
- C言語の参照をC17からC23に更新。これにともない、Cライブラリ由来のヘッダに以下の変更が入った
579+
- [`<cstdlib>`](/reference/cstdlib.md): [`free_sized()`](/reference/cstdlib/free_sized.md)[`free_aligned_sized()`](/reference/cstdlib/free_aligned_sized.md)[`memalignment()`](/reference/cstdlib/memalignment.md)[`strfromf()`](/reference/cstdlib/strfromf.md)[`strfromd()`](/reference/cstdlib/strfromd.md)[`strfroml()`](/reference/cstdlib/strfroml.md)を追加。[`bsearch()`](/reference/cstdlib/bsearch.md)`const`版オーバーロードを追加。[`realloc()`](/reference/cstdlib/realloc.md)にサイズ`0`を渡した場合がエラー性動作となった
580+
- [`<ctime>`](/reference/ctime.md): [`timespec_getres()`](/reference/ctime/timespec_getres.md)`timegm()``gmtime_r()``localtime_r()`と、`TIME_MONOTONIC``TIME_ACTIVE``TIME_THREAD_ACTIVE``__STDC_VERSION_TIME_H__`を追加。`asctime()``ctime()`を非推奨化
581+
- [`<cmath>`](/reference/cmath.md): [`nextup()`](/reference/cmath/nextup.md)[`nextdown()`](/reference/cmath/nextdown.md)を追加
582+
- [`<cstdio>`](/reference/cstdio.md): `_PRINTF_NAN_LEN_MAX``__STDC_VERSION_STDIO_H__`を追加
583+
- [`<cinttypes>`](/reference/cinttypes.md): 2進数用の書式指定マクロ (`PRIb`*N*`SCNb`*N*等) と`__STDC_VERSION_INTTYPES_H__`を追加
584+
- [`<cfloat>`](/reference/cfloat.md): [`INFINITY`](/reference/cmath/infinity.md)[`NAN`](/reference/cmath/nan.md)[`FLT_SNAN`](/reference/cfloat/flt_snan.md)[`DBL_SNAN`](/reference/cfloat/dbl_snan.md)[`LDBL_SNAN`](/reference/cfloat/ldbl_snan.md)`__STDC_VERSION_FLOAT_H__`を追加。[`DECIMAL_DIG`](/reference/cfloat/decimal_dig.md)を非推奨化し、[`FLT_HAS_SUBNORM`](/reference/cfloat/flt_has_subnorm.md)[`DBL_HAS_SUBNORM`](/reference/cfloat/dbl_has_subnorm.md)[`LDBL_HAS_SUBNORM`](/reference/cfloat/ldbl_has_subnorm.md)を廃止予定 (obsolescent) とした
585+
- [`<climits>`](/reference/climits.md): 各整数型の幅 (ビット数) を表す[`BOOL_WIDTH`](/reference/climits/bool_width.md)等のマクロを追加
586+
- [`<cstdint>`](/reference/cstdint.md): 各整数型の幅 (ビット数) を表す[`INT8_WIDTH`](/reference/cstdint/int8_width.md)等のマクロと、`__STDC_VERSION_STDINT_H__`を追加
587+
- [`<cstring>`](/reference/cstring.md): `memccpy()``strdup()``strndup()``memset_explicit()`を追加
588+
- [`<cuchar>`](/reference/cuchar.md): `mbrtoc8()``c8rtomb()``__STDC_VERSION_UCHAR_H__`を追加
589+
- [`<cstddef>`](/reference/cstddef.md): `unreachable`マクロおよび`__STDC_VERSION_STDDEF_H__`は定義しないことを明記

reference.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@
225225
| [`<cerrno>`](/reference/cerrno.md) | エラー番号 | |
226226
| [`<cfenv>`](/reference/cfenv.md) | 浮動小数点環境へのアクセス | C++11 (C99) |
227227
| [`<cfloat>`](/reference/cfloat.md) | 浮動小数点数の定数 | |
228-
| `<cinttypes>` | 固定精度整数のための書式指定マクロ | C++11 (C99) |
228+
| [`<cinttypes>`](/reference/cinttypes.md) | 固定精度整数のための書式指定マクロ | C++11 (C99) |
229229
| `<ciso646>` | `&&`に対する別名`and`のような、各種演算子に対するマクロを定義する。<br/> ただしC++ではこれらの別名はキーワードとして定義されるため、このヘッダでは何も定義されない。 | C++20で削除 |
230230
| [`<climits>`](/reference/climits.md) | 整数型の最小値、最大値を表すマクロ | |
231231
| [`<clocale>`](/reference/clocale.md) | ロケール | |
@@ -244,7 +244,7 @@
244244
| [`<cstring>`](/reference/cstring.md) | 文字列操作 | |
245245
| `<ctgmath>` | ジェネリックな数学関数 | C++11 (C99)<br/> C++17で非推奨<br/> C++20で削除 |
246246
| [`<ctime>`](/reference/ctime.md) | 日付・時間 | |
247-
| `<cuchar>` | ユニコード文字型 | C++11 (C11) |
247+
| [`<cuchar>`](/reference/cuchar.md) | ユニコード文字型 | C++11 (C11) |
248248
| `<cwchar>` | ワイド文字型 | |
249249
| `<cwctype>` | ワイド文字の種別と判定 | |
250250

reference/cfloat.md

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ NaN とは非数(Not-a-Number)を表し、ほとんど全ての演算で浮
5757
| [`FLT_DECIMAL_DIG`](cfloat/flt_decimal_dig.md) | `float`の数値を10進数で正確に表すのに必要な有効数字の桁数。<br/>上記モデルでは、$b$ が $10$ の累乗の場合、$p \log_{10} b$、それ以外の場合、$\lceil 1 + p \log_{10} b\rceil$ | C++17 |
5858
| [`DBL_DECIMAL_DIG`](cfloat/dbl_decimal_dig.md) | `double`の数値を10進数で正確に表すのに必要な有効数字の桁数。<br/>上記モデルでは、$b$ が $10$ の累乗の場合、$p \log_{10} b$、それ以外の場合、$\lceil 1 + p \log_{10} b\rceil$ | C++17 |
5959
| [`LDBL_DECIMAL_DIG`](cfloat/ldbl_decimal_dig.md) | `long double`の数値を10進数で正確に表すのに必要な有効数字の桁数。<br/>上記モデルでは、$b$ が $10$ の累乗の場合、$p \log_{10} b$、それ以外の場合、$\lceil 1 + p \log_{10} b\rceil$ | C++17 |
60-
| [`DECIMAL_DIG`](cfloat/decimal_dig.md) | 精度が一番高い浮動小数点型の数値を10進数で正確に表すのに必要な有効数字の桁数。<br/>上記モデルでは、$p_{\rm max}$ を精度が一番高い浮動小数点型の $p$ とすると、$b$ が $10$ の累乗の場合、$p_{\rm max} \log_{10} b$、それ以外の場合、$\lceil 1 + p_{\rm max}\log_{10} b\rceil$ | C++11 |
60+
| [`DECIMAL_DIG`](cfloat/decimal_dig.md) | 精度が一番高い浮動小数点型の数値を10進数で正確に表すのに必要な有効数字の桁数。<br/>上記モデルでは、$p_{\rm max}$ を精度が一番高い浮動小数点型の $p$ とすると、$b$ が $10$ の累乗の場合、$p_{\rm max} \log_{10} b$、それ以外の場合、$\lceil 1 + p_{\rm max}\log_{10} b\rceil$ | C++11<br/> C++26で非推奨 |
6161
| [`FLT_MANT_DIG`](cfloat/flt_mant_dig.md) | `float`を基数 [`FLT_RADIX`](cfloat/flt_radix.md) で表現した際の仮数部の桁数。<br/>上記モデルでは、$p$ | |
6262
| [`DBL_MANT_DIG`](cfloat/dbl_mant_dig.md) | `double`を基数 [`FLT_RADIX`](cfloat/flt_radix.md) で表現した際の仮数部の桁数。<br/>上記モデルでは、$p$ | |
6363
| [`LDBL_MANT_DIG`](cfloat/ldbl_mant_dig.md) | `long double`を基数 [`FLT_RADIX`](cfloat/flt_radix.md) で表現した際の仮数部の桁数。<br/>上記モデルでは、$p$ | |
@@ -76,9 +76,27 @@ NaN とは非数(Not-a-Number)を表し、ほとんど全ての演算で浮
7676

7777
| マクロ | 説明 | 対応バージョン |
7878
|--------|------|----------------|
79-
| [`FLT_HAS_SUBNORM`](cfloat/flt_has_subnorm.md) | `float`における非正規化数のサポート状況を判定する | C++17 |
80-
| [`DBL_HAS_SUBNORM`](cfloat/dbl_has_subnorm.md) | `double`における非正規化数のサポート状況を判定する | C++17 |
81-
| [`LDBL_HAS_SUBNORM`](cfloat/ldbl_has_subnorm.md) | `long double`における非正規化数のサポート状況を判定する | C++17 |
79+
| [`FLT_HAS_SUBNORM`](cfloat/flt_has_subnorm.md) | `float`における非正規化数のサポート状況を判定する | C++17<br/> C++26で非推奨 |
80+
| [`DBL_HAS_SUBNORM`](cfloat/dbl_has_subnorm.md) | `double`における非正規化数のサポート状況を判定する | C++17<br/> C++26で非推奨 |
81+
| [`LDBL_HAS_SUBNORM`](cfloat/ldbl_has_subnorm.md) | `long double`における非正規化数のサポート状況を判定する | C++17<br/> C++26で非推奨 |
82+
83+
84+
## 無限大とNaN
85+
86+
| マクロ | 説明 | 対応バージョン |
87+
|--------|------|----------------|
88+
| [`INFINITY`](/reference/cmath/infinity.md) | `float`型の正の無限大 | C++26で`<cfloat>`に追加 |
89+
| [`NAN`](/reference/cmath/nan.md) | `float`型のquiet NaN | C++26で`<cfloat>`に追加 |
90+
| [`FLT_SNAN`](cfloat/flt_snan.md) | `float`型のシグナルNaN | C++26 |
91+
| [`DBL_SNAN`](cfloat/dbl_snan.md) | `double`型のシグナルNaN | C++26 |
92+
| [`LDBL_SNAN`](cfloat/ldbl_snan.md) | `long double`型のシグナルNaN | C++26 |
93+
94+
95+
## バージョン情報
96+
97+
| マクロ | 説明 | 対応バージョン |
98+
|--------|------|----------------|
99+
| `__STDC_VERSION_FLOAT_H__` | `<cfloat>`が提供するC標準ライブラリ機能のバージョン (`202311L`) | C++26 |
82100

83101

84102
## 最大値
@@ -117,3 +135,5 @@ NaN とは非数(Not-a-Number)を表し、ほとんど全ての演算で浮
117135
## 参照
118136
- [P0063R3 C++17 should refer to C11 instead of C99](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0063r3.html)
119137
- [P0175R1 Synopses for the C library](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0175r1.html)
138+
- [P3348R4 C++26 should refer to C23 not C17](https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3348r4.html)
139+
- C++26がC23を参照するようになり、`INFINITY``NAN``FLT_SNAN``DBL_SNAN``LDBL_SNAN``__STDC_VERSION_FLOAT_H__`が追加された。`DECIMAL_DIG`が非推奨となり、`FLT_HAS_SUBNORM``DBL_HAS_SUBNORM``LDBL_HAS_SUBNORM`が廃止予定 (obsolescent) となった

reference/cfloat/dbl_has_subnorm.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,15 @@
22
* cfloat[meta header]
33
* macro[meta id-type]
44
* cpp17[meta cpp]
5+
* cpp26deprecated[meta cpp]
56

67
```cpp
78
#define DBL_HAS_SUBNORM implementation-defined
89
```
910
11+
このマクロは、C++26で廃止予定 (obsolescent) となった。
12+
13+
1014
## 概要
1115
`DBL_HAS_SUBNORM` は、`double`型における非正規化数のサポート状況を表すマクロである。
1216
@@ -27,6 +31,15 @@
2731
- このマクロは、非正規化数を表現できる場合の、浮動小数点数の正の最小値を表す[`DBL_TRUE_MIN`](dbl_true_min.md)のために定義された
2832
2933
34+
## 非推奨・削除の詳細
35+
このマクロはコンパイル時定数として非正規化数のサポート状況を取得するものであったが、これは必ずしもコンパイル時に確定する値ではなく、有用でないため廃止予定 (obsolescent) となった:
36+
37+
- ハードウェアによっては非正規化数をソフトウェアエミュレーションでサポートする場合があり、サポート状況が判定できず`-1` (indeterminable) となることがある
38+
- ハードウェアサポートがある場合でも、実行時のフラグ切り替えによって非正規化数をゼロにフラッシュ (flush-to-zero) するよう設定できるため、サポート状況がコンパイル時に確定しない場合がある
39+
40+
C++23では、対応する[`std::numeric_limits`](/reference/limits/numeric_limits.md)`<double>::`[`has_denorm`](/reference/limits/numeric_limits/has_denorm.md)が同じ理由ですでに非推奨となっている。
41+
42+
3043
## 例
3144
```cpp example
3245
#include <iostream>
@@ -64,3 +77,5 @@ int main()
6477
- [WG14/N1378 `xxx_TRUE_MIN` macros for `<float.h>`](http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1378.htm)
6578
- [P0063R3 C++17 should refer to C11 instead of C99](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0063r3.html)
6679
- [P0175R1 Synopses for the C library](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0175r1.html)
80+
- [P3348R4 C++26 should refer to C23 not C17](https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3348r4.html)
81+
- C++26がC23を参照するようになり、このマクロが廃止予定 (obsolescent) となった

reference/cfloat/dbl_snan.md

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# DBL_SNAN
2+
* cfloat[meta header]
3+
* macro[meta id-type]
4+
* cpp26[meta cpp]
5+
6+
```cpp
7+
#define DBL_SNAN see below
8+
```
9+
10+
## 概要
11+
`double`型のシグナルNaN (signaling NaN) を表す定数式マクロ。
12+
13+
[`std::numeric_limits`](/reference/limits/numeric_limits.md)`<double>::`[`signaling_NaN`](/reference/limits/numeric_limits/signaling_nan.md)`()`と等しい。
14+
15+
C23で`<float.h>`に追加されたマクロであり、C++26で`<cfloat>`に取り込まれた。
16+
17+
18+
## 備考
19+
- シグナルNaNがサポートされない場合、このマクロは定義されない
20+
21+
22+
## 例
23+
```cpp example
24+
#include <iostream>
25+
#include <cfloat>
26+
#include <cmath>
27+
28+
int main()
29+
{
30+
double x = DBL_SNAN;
31+
std::cout << std::boolalpha << std::isnan(x) << std::endl;
32+
}
33+
```
34+
* DBL_SNAN[color ff0000]
35+
* std::isnan[link /reference/cmath/isnan.md]
36+
37+
### 出力
38+
```
39+
true
40+
```
41+
42+
43+
## バージョン
44+
### 言語
45+
- C++26
46+
47+
### 処理系
48+
- [Clang](/implementation.md#clang): 22 [mark noimpl]
49+
- [GCC](/implementation.md#gcc): 16.1 [mark noimpl]
50+
- [Visual C++](/implementation.md#visual_cpp): 2026 Update 2 [mark noimpl]
51+
52+
53+
## 関連項目
54+
- [`FLT_SNAN`](flt_snan.md): `float`型のシグナルNaN
55+
- [`LDBL_SNAN`](ldbl_snan.md): `long double`型のシグナルNaN
56+
- [`NAN`](/reference/cmath/nan.md): `float`型のquiet NaN
57+
58+
59+
## 参照
60+
- [P3348R4 C++26 should refer to C23 not C17](https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3348r4.html)
61+
- C++26がC23を参照するようになり、このマクロが`<cfloat>`に追加された

reference/cfloat/decimal_dig.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@
22
* cfloat[meta header]
33
* macro[meta id-type]
44
* cpp11[meta cpp]
5+
* cpp26deprecated[meta cpp]
56
* [mathjax enable]
67

78
```cpp
89
#define DECIMAL_DIG implementation-defined
910
```
1011
12+
このマクロは、C++26で非推奨となった。型ごとの桁数を示す[`FLT_DECIMAL_DIG`](flt_decimal_dig.md)・[`DBL_DECIMAL_DIG`](dbl_decimal_dig.md)・[`LDBL_DECIMAL_DIG`](ldbl_decimal_dig.md)を使用すること。
13+
14+
1115
## 概要
1216
精度が一番高い浮動小数点型の数値を10進数で正確に表すのに必要な有効数字の桁数を表すマクロ。
1317
より正確には、精度が一番高い浮動小数点型のあらゆる数値を、$n$ 桁の10進数に変換し、また元に戻した場合に値が変わらないような最小の整数値 $n$ を表すマクロ。
@@ -37,6 +41,16 @@ $b$ や $p$ については [`<cfloat>`](../cfloat.md) のモデルも参照。
3741
- [`LDBL_DECIMAL_DIG`](ldbl_decimal_dig.md)
3842
3943
44+
## 非推奨・削除の詳細
45+
C言語側で対応するマクロが非推奨となったため、C++側でも非推奨とする。
46+
47+
このマクロは、精度が一番高い浮動小数点型のみを対象とする値であり、実質的に[`LDBL_DECIMAL_DIG`](ldbl_decimal_dig.md)と同じものであった。型ごとに必要な桁数は異なるため、すべての浮動小数点型に対して単一の値を使用するこのマクロよりも、型ごとの桁数を表す以下のマクロを使用するほうが正確である:
48+
49+
- [`FLT_DECIMAL_DIG`](flt_decimal_dig.md) (`float`用)
50+
- [`DBL_DECIMAL_DIG`](dbl_decimal_dig.md) (`double`用)
51+
- [`LDBL_DECIMAL_DIG`](ldbl_decimal_dig.md) (`long double`用)
52+
53+
4054
## 例
4155
```cpp example
4256
#include <iostream>
@@ -81,3 +95,8 @@ int main()
8195
- [Visual C++](/implementation.md#visual_cpp): 2013 [mark verified], 2015 [mark verified]
8296
- 2013は、正しく実装されていない。C++11での最低値である10と定義されている。しかし、`double`および`long double`がIEEE 754倍精度で実装されているため、少なくとも17以上でなければならない。
8397
- 2015は、正しく17と定義されている。
98+
99+
100+
## 参照
101+
- [P3348R4 C++26 should refer to C23 not C17](https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3348r4.html)
102+
- C++26がC23を参照するようになり、このマクロが非推奨となった

reference/cfloat/flt_has_subnorm.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,15 @@
22
* cfloat[meta header]
33
* macro[meta id-type]
44
* cpp17[meta cpp]
5+
* cpp26deprecated[meta cpp]
56

67
```cpp
78
#define FLT_HAS_SUBNORM implementation-defined
89
```
910
11+
このマクロは、C++26で廃止予定 (obsolescent) となった。
12+
13+
1014
## 概要
1115
`FLT_HAS_SUBNORM` は、`float`型における非正規化数のサポート状況を表すマクロである。
1216
@@ -27,6 +31,15 @@
2731
- このマクロは、非正規化数を表現できる場合の、浮動小数点数の正の最小値を表す[`FLT_TRUE_MIN`](flt_true_min.md)のために定義された
2832
2933
34+
## 非推奨・削除の詳細
35+
このマクロはコンパイル時定数として非正規化数のサポート状況を取得するものであったが、これは必ずしもコンパイル時に確定する値ではなく、有用でないため廃止予定 (obsolescent) となった:
36+
37+
- ハードウェアによっては非正規化数をソフトウェアエミュレーションでサポートする場合があり、サポート状況が判定できず`-1` (indeterminable) となることがある
38+
- ハードウェアサポートがある場合でも、実行時のフラグ切り替えによって非正規化数をゼロにフラッシュ (flush-to-zero) するよう設定できるため、サポート状況がコンパイル時に確定しない場合がある
39+
40+
C++23では、対応する[`std::numeric_limits`](/reference/limits/numeric_limits.md)`<float>::`[`has_denorm`](/reference/limits/numeric_limits/has_denorm.md)が同じ理由ですでに非推奨となっている。
41+
42+
3043
## 例
3144
```cpp example
3245
#include <iostream>
@@ -64,3 +77,5 @@ int main()
6477
- [WG14/N1378 `xxx_TRUE_MIN` macros for `<float.h>`](http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1378.htm)
6578
- [P0063R3 C++17 should refer to C11 instead of C99](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0063r3.html)
6679
- [P0175R1 Synopses for the C library](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0175r1.html)
80+
- [P3348R4 C++26 should refer to C23 not C17](https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3348r4.html)
81+
- C++26がC23を参照するようになり、このマクロが廃止予定 (obsolescent) となった

reference/cfloat/flt_snan.md

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# FLT_SNAN
2+
* cfloat[meta header]
3+
* macro[meta id-type]
4+
* cpp26[meta cpp]
5+
6+
```cpp
7+
#define FLT_SNAN see below
8+
```
9+
10+
## 概要
11+
`float`型のシグナルNaN (signaling NaN) を表す定数式マクロ。
12+
13+
[`std::numeric_limits`](/reference/limits/numeric_limits.md)`<float>::`[`signaling_NaN`](/reference/limits/numeric_limits/signaling_nan.md)`()`と等しい。
14+
15+
C23で`<float.h>`に追加されたマクロであり、C++26で`<cfloat>`に取り込まれた。
16+
17+
18+
## 備考
19+
- シグナルNaNがサポートされない場合、このマクロは定義されない
20+
21+
22+
## 例
23+
```cpp example
24+
#include <iostream>
25+
#include <cfloat>
26+
#include <cmath>
27+
28+
int main()
29+
{
30+
float x = FLT_SNAN;
31+
std::cout << std::boolalpha << std::isnan(x) << std::endl;
32+
}
33+
```
34+
* FLT_SNAN[color ff0000]
35+
* std::isnan[link /reference/cmath/isnan.md]
36+
37+
### 出力
38+
```
39+
true
40+
```
41+
42+
43+
## バージョン
44+
### 言語
45+
- C++26
46+
47+
### 処理系
48+
- [Clang](/implementation.md#clang): 22 [mark noimpl]
49+
- [GCC](/implementation.md#gcc): 16.1 [mark noimpl]
50+
- [Visual C++](/implementation.md#visual_cpp): 2026 Update 2 [mark noimpl]
51+
52+
53+
## 関連項目
54+
- [`DBL_SNAN`](dbl_snan.md): `double`型のシグナルNaN
55+
- [`LDBL_SNAN`](ldbl_snan.md): `long double`型のシグナルNaN
56+
- [`NAN`](/reference/cmath/nan.md): `float`型のquiet NaN
57+
58+
59+
## 参照
60+
- [P3348R4 C++26 should refer to C23 not C17](https://open-std.org/jtc1/sc22/wg21/docs/papers/2025/p3348r4.html)
61+
- C++26がC23を参照するようになり、このマクロが`<cfloat>`に追加された

0 commit comments

Comments
 (0)