В этом примере используется библиотека Дата без каких-либо using namespace:
#include <iostream>
#include <date/date.h>
//using namespace std;
//using namespace date;
int main() {
date::year_month_day startDate = 2018_y / 1 / 6;
std::cout << startDate << '\n';
return 0;
}
но не компилируется, ошибка: не удалось найти числовой литерал оператора «оператор» «_y»
Как использовать эту библиотеку без using namespace?
ОБНОВИТЬ:
Я изменил код следующим образом, но ошибок по-прежнему много.
#include <iostream>
#include <date/date.h>
int main() {
date::sys_time<std::chrono::nanoseconds> tp;
std::istringstream in1{"2018-12-21 01:15:31"};
in1 >> date::parse("%F %T", td);
std::cout << tp << '\n';
return 0;
}
ошибка: нет соответствия для 'operator<<' (типы операндов 'std::ostream' {он же 'std::basic_ostream'} и 'date::sys_time...
Если вы отметите где _y определено в заголовочном файле, вы увидите, что он определен в подпространстве имен literals. Это означает, что вы можете сделать using namespace date::literals;, чтобы получить только литералы, не получая остальную часть пространства имен date.
Пожалуйста, проверьте вопрос еще раз.





Числовой литеральный оператор «оператор» «_y» объявлен внутри пространства имен «дата».
Вы можете использовать «используя дату пространства имен» или «используя дату пространства имен:: литералы»
Дополнительная информация: Как обратиться к пользовательскому литеральному оператору внутри пространства имен?
Или вы можете добавлять операторы один за другим: "using date::literals::operator""_y;"
#include <iostream>
#include <date/date.h>
int
main()
{
using namespace date::literals;
date::year_month_day startDate = 2018_y / 1 / 6;
std::cout << startDate << '\n';
}
А также:
#include <iostream>
#include <date/date.h>
int
main()
{
date::sys_time<std::chrono::nanoseconds> tp;
std::istringstream in1{"2018-12-21 01:15:31"};
in1 >> date::parse("%F %T", tp);
using date::operator<<;
std::cout << tp << '\n';
}
Со страницы, на которую вы ссылаетесь: «Вся библиотека находится в пространстве имен date. Примеры в этом обзоре предполагают: использование пространства имен date; использование пространства имен std::chrono; чтобы сократить многословие».