C++ Обновление стандартной библиотеки в MacOS
Возможно я чего-то не понимаю, но я нигде не могу найти информацию об обновлении стандартной библиотеки С++ в целом, а тем более на macos. Суть проблемы следующая: У меня был установлен компилятор clang по умолчанию. Пользуюсь Macbook Pro M1 2021. Версия ОС: 13.6.2 (22G320). В качестве IDE использую vscode с компиляцией с помощью задач tasks.json либо с помощью терминала.
clang изначально был 14 версии. Я с официального сайта apple установил новый пакет command line tools 15. (хочется добавить, что xcode-select --install у меня не работало с сообщением command line tools are already installed, use "Software Update" in System Settings to install updates. В настройках на макоси никаких обновлений command line tools я не нашел, только обновление на macos sonoma, но по некоторым причинам я не могу обновить ее в данный момент. https://download.developer.apple.com/Developer_Tools/Command_Line_Tools_for_Xcode_15/Command_Line_Tools_for_Xcode_15.dmg
До установки и после при вводе команды xcode-select -v выводилось это:
xcode-select version 2397.
После переустановки command line tools 15 команда clang++ -v стала выводить
Apple clang version 15.0.0 (clang-1500.0.40.1)
Target: arm64-apple-darwin22.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
Однако версия библиотеки осталась прежней. В частности меня интересует chrono и ее описание на cppreference. Там приведен пример
#include <chrono>
#include <iostream>
long fibonacci(unsigned n)
{
return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2);
}
int main()
{
const auto start{std::chrono::steady_clock::now()};
const auto fb{fibonacci(42)};
const auto end{std::chrono::steady_clock::now()};
const std::chrono::duration<double> elapsed_seconds{end - start};
std::cout << "fibonacci(42): " << fb << '\n' << "прошедшее время: ";
// std::cout << elapsed_seconds.count() << "s\n"; // До C++20
std::cout << elapsed_seconds << '\n'; // chrono::duration operator<< в C++20
}
Начиная с C++20 должен быть перегружен оператор << у шаблона класса chrono::duration operator<<. Однако у меня этот код не работает, также при проверке макросом __cpp_lib_chrono в консоль выводится 201611.
Как можно обновить саму библиотеку?
Второй вопрос заключается в том, что при компиляции файла командой в терминале /Library/Developer/CommandLineTools/usr/bin/clang++ -Wall -std=gnu++2b main.cpp MQTimer.cpp -o /main
Возникает проблема такого рода
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/ctime:49:10: fatal error: 'time.h' file not found
Однако при компиляции с путём /usr/bin/clang++ таких проблем не возникает и всё компилируется. Объясните пожалуйста почему так, если при вводе в терминал clang++ -v выводится installed Dir: /Library/Developer/CommandLineTools/usr/bin.
Буду рад любой помощи или ссылок, где я могу вычитать информацию. Спасибо большое за ответ на тупые вопросы!)