Comments (2)
Thanks for the nice words.
My rationale to-date for not having them (for example for year_month_day
) is:
- The default constructor would not be higher performance than the
{y, m, d}
constructor. - It is difficult to choose a value for the default constructed object that is not surprising.
- It is easy to supply a "default value" of your own choosing for different situations.
For an example of the latter:
#include "date.h"
#include <iostream>
#include <fstream>
void
input(std::istream& is, date::year_month_day& x)
{
int y, m, d;
is >> y >> m >> d;
// Don't modify x if the read failed
if (!is.fail())
x = date::year{y}/m/d;
}
int
main()
{
std::ifstream infile("test.dat");
while (infile)
{
using namespace date::literals;
auto a_date = jan/0/0; // initialize to !ok()
input(infile, a_date);
if (a_date.ok())
std::cout << a_date << '\n';
else
break;
}
}
In this example I want to "default" the date to something that is !ok()
. If the de-serialization works, it should set it to something that is ok()
.
I have not yet come across a compelling use case where I really do need default constructors. And new
ing arrays of things is not compelling in modern C++ (use vector
instead).
I am open to being shown compelling use cases for default constructors for these types: Use cases that demonstrate advantages that will outweigh the disadvantage of having a surprising default value no matter what gets chosen.
from date.
Thanks for the elaborate clarification.
Fair enough, I will try to make up some examples.
from date.
Related Issues (20)
- Waybar fails to compile with clang/libcxx because of date/tz.h HOT 8
- Change the type of the data member of class year to int from short HOT 3
- Undefined symbol HOT 1
- date_test_pass_parse_test fails with gcc (Debian 10.2.1-6) 10.2.1 20210110 HOT 1
- Date Parse: one pattern for ISO8601 DATE or DATE TIME HOT 6
- How can I convert between std::chrono::time_point and string (2023-12-06 00:46:45.801479+08)? HOT 4
- OSSFuzz Integration HOT 9
- Incorrect value of date::sys_info::save HOT 1
- Cannot override CMake options when fetching the library via FetchContent_Declare()
- .zip files have "text" git attribute HOT 1
- Possibly big performance improvement for `time_zone::to_sys()` HOT 10
- Failed to install tzdb HOT 4
- Transform date::local_seconds and timezone offset to struct tm HOT 1
- Missing tz.h header file when selecting compiler for ARM architecture HOT 1
- Opposite inner 'if' condition leads to a dead code block HOT 1
- Use timezone name like "-08:00" for `locate_zone()` HOT 2
- date::parse() doesn't have a formatting character for ISO 8601 strings without 'T' separator HOT 2
- How to parse datetime with milliseconds and timezone? HOT 1
- Build failure due to ambiguity with >= libc++ 17
- Could a new official version be released? HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from date.