библиотека дат без использования пространства имен - PullRequest
0 голосов
/ 11 марта 2019

В этом примере используется библиотека date без 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;
}

но не компилируется, ошибка: невозможно найти числовой литеральный оператор 'operator "" _ y'

Как использовать эту библиотеку без using namespace?

UPDATE:

Я изменил код следующим образом, но все еще много ошибок.

#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' {aka 'std :: basic_ostream'} и 'date :: sys_time ... </p>

Ответы [ 2 ]

1 голос
/ 11 марта 2019
#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';
}
1 голос
/ 11 марта 2019

Числовой литеральный оператор 'operator' '_ y' объявлен внутри пространства имен 'date'.

Вы можете использовать 'использование даты в пространстве имен' или 'использование даты в пространстве имен :: литералы'

Дополнительная информация: Как обратиться к пользовательскому литеральному оператору внутри пространства имен?

...