Ushbu sarlavha turni qo'llab-quvvatlash kutubxonasining bir qismi bo'lib, belgilangan kenglikdagi suzuvchi nuqta turlarini taqdim etadi va C++23 standartidan qo'shildi. Bu standartdan foydalanishda hozir muammoga uchrashingiz mumkin hali kompilyatorlar gcc, clang va boshqalarda qo'shilgani yo'q to'laqonli.
Agar dastur kengaytirilgan suzuvchi nuqta turi sifatida quyidagi ISO 60559 turlaridan birini qo'llab-quvvatlasa, u holda:
- tegishli makro oldindan belgilangan (predefined macro)
- mos keladigan suzuvchi nuqta tur uchun so'zma-so'z qo'shimchasi mavjud (literal suffix) va
- tegishli turdagi sarlavha nomi (type name) berilgan:
bfloat16 - bu suzuvchi nuqtali tur formati bilan tanishib chiqish uchun havola.
Misol
#include <stdfloat>
#include <print>
int main()
{
std::float64_t f = 0.1f64;
std::print(f);
return 0;
}
Bilamizki, float, double, long double turlari mavjud, lekin ular kompilyatorga qarab xotiradan joy egallashda turli xil natijani ko'rsatishi mumkin :
#include <iostream>
int main() {
std::cout << sizeof(double) << std::endl;
return 0;
}
Endi bunday kamchiliklarni bartaraf eta olamiz hamda o'zimiz uchun qulayliklar yaratamiz ya'ni butun turlar bilan ishlashdagi kabi.
C++23 standartida bir qancha yangilanishlar mavjud bo'lib ular bilan tanishishda davom etamiz. Har bir standart dasturlash tilining kamchiliklarini bartaraf etibgina qolmay, yangiliklar olib keladi.