can you help me resolve this error
invalid operands to binary expression ('ostream' (aka 'basic_ostream') and 'const std::chrono::year_month_day')
I compile the source code with CLion 2023.3.2 C++ 20 Apple Silicon M1 clang++ version Apple clang version 15.0.0 (clang-1500.1.0.2.5) Target: arm64-apple-darwin23.2.0 Thread model: posix
Source code
Colonna.h
#ifndef SUPERE_COLONNA_H
#define SUPERE_COLONNA_H
#include <chrono>
namespace colonna {
class Colonna {
public:
Colonna(const std::chrono::year_month_day &dataC);
const std::chrono::year_month_day &getData() const;
void setData(const std::chrono::year_month_day &dataC);
private:
// Data
std::chrono::year_month_day dataC;
};
} // colonna
#endif //SUPERE_COLONNA_H
Colonna.cpp
#include "Colonna.h"
namespace colonna {
Colonna::Colonna(const std::chrono::year_month_day &dataC) : dataC(dataC) {}
const std::chrono::year_month_day &Colonna::getData() const {
return dataC;
}
void Colonna::setData(const std::chrono::year_month_day &dataC) {
Colonna::dataC = dataC;
}
} // colonna
main.cpp
#include <chrono>
#include <iostream>
#include "Colonna.h"
using namespace colonna;
using namespace std;
using namespace std::chrono;
int main() {
Colonna colonna ({month(1)/day(12)/year(2024)});
std::cout << colonna.getData() << '\n';
}
Thank you all
I ran the tests with the IDE and with the following commands
clang++ --std=c++20 main.cpp clang++ --std=gnu++20 main.cpp
The clang version string clang-1500.1.0.2.5
maps to LLVM version 16.0.0.
Unfortunately std::chrono::operator<<(std::chrono::year_month_day)
wasn't added to clang's libc++ until LLVM 17 as can be seen in this demo.