alloc_deleter in boost smart_ptr is not move assignable,
thus std::unique_ptr<T, alloc_deleter> is not,
thus variant<..., unique_ptr<..., alloc_deleter>> is not,
thus vector<variant>::emplace(iter, ...) can't move stuff around!
Should alloc_deleter be move-assignable?
The tweet
thus std::unique_ptr<T, alloc_deleter> is not,
thus variant<..., unique_ptr<..., alloc_deleter>> is not,
thus vector<variant>::emplace(iter, ...) can't move stuff around!
Should alloc_deleter be move-assignable?
The tweet
Web++: A C++ Web Framework
alloc_deleter in boost smart_ptr is not move assignable, thus std::unique_ptr<T, alloc_deleter> is not, thus variant<..., unique_ptr<..., alloc_deleter>> is not, thus vector<variant>::emplace(iter, ...) can't move stuff around! Should alloc_deleter be move…
The story went on to the point that I made a template new type called "dynamic" which is an allocator-aware type.
The problem that I got with it right now is that where I tend to use that type is where the 1th template parameter will be an incomplete type.
That led me to adding checks to see if a type is_complete. But now I don't think that's the right solution here.
I found a compiler bug along the way too.
The problem that I got with it right now is that where I tend to use that type is where the 1th template parameter will be an incomplete type.
That led me to adding checks to see if a type is_complete. But now I don't think that's the right solution here.
I found a compiler bug along the way too.
Implemented my own std::function alternative (which is allocator-aware) called istl::function and it's beating std::function's performance with the default std::allocator.
Read more about its performance here
Read more about its performance here
✔️ SQL Query Builder tests are passing
✔️ istl::function tests are passing
1. Next steps are to write more tests for SQL Query Builder and then solve them of course so we can have a more stable SQL Database support system inside this.
2. After that, I might start working on a new, dynamic router. The current router is static and it's good but you probably can't use it inside a source file and thus that would mean your whole application essentially will have to be a big header-only executable. So a dynamic router is necessary.
I probably will use the recently made
✔️ istl::function tests are passing
1. Next steps are to write more tests for SQL Query Builder and then solve them of course so we can have a more stable SQL Database support system inside this.
2. After that, I might start working on a new, dynamic router. The current router is static and it's good but you probably can't use it inside a source file and thus that would mean your whole application essentially will have to be a big header-only executable. So a dynamic router is necessary.
I probably will use the recently made
istl::function in there too.
Web++: A C++ Web Framework
Implemented my own std::function alternative (which is allocator-aware) called istl::function and it's beating std::function's performance with the default std::allocator. Read more about its performance here
Some of istl::function properties so far:
- allocator-aware
- Small stack size (alloc size + void*)
- no internal SOO, you can use stack_allocator instead
- beats std::function at benchmarks, and gets beaten by it at the same time
- allocator-aware
- Small stack size (alloc size + void*)
- no internal SOO, you can use stack_allocator instead
- beats std::function at benchmarks, and gets beaten by it at the same time
It's fun getting blocked by someone who's trying to make a twitter bot that makes a list of people with different political views than you so you can block them all in one go, for saying that such tools will lead people into isolation and is a begging of radicalism.
I thought it's a good time to change the channel's photo for people who are not comfortable with the last one.
It's interesting how much people don't want to hear the opposite side fearing they might learn a thing or two along the way that'll have to change their minds about things they previously thought were facts!
I thought it's a good time to change the channel's photo for people who are not comfortable with the last one.
It's interesting how much people don't want to hear the opposite side fearing they might learn a thing or two along the way that'll have to change their minds about things they previously thought were facts!
⚙️ invocable_inorder, invoke_inorder Utilities:
Call your function, and pass the its arguments in any order or by omitting any number of them!
Source on compiler explorer
Source in project
Call your function, and pass the its arguments in any order or by omitting any number of them!
// define:
void callable(one, two, three);
// call it like this:
invoke_inorder(callable, three, one, two, four);
Source on compiler explorer
Source in project
We can totally replace "
Instead of checking 2 types, you can check two ranges:
Splits it in the middle, checks if both half are the same.
Code on Project's Github
Code on Compiler Explorer
std::same_as" and "std::is_same_v" with this utility right here; and also "cvref_as" is probably more useful.Instead of checking 2 types, you can check two ranges:
same_as_all<T..., U...>
Splits it in the middle, checks if both half are the same.
Code on Project's Github
Code on Compiler Explorer
🟢 sub_tuple implementation.
Here I needed to create a sub-tuple, so I implemented one that creates a sub-tuple.
Usages:
or:
I have already implemented some utilities for making custom index_sequences based on conditions, ranges, or ...
Source code of this in the project
Here I needed to create a sub-tuple, so I implemented one that creates a sub-tuple.
Usages:
sub_tuple<1, 6>(tup)
or:
sub_tuple(tup, index_sequence<1, 3, 6>)
I have already implemented some utilities for making custom index_sequences based on conditions, ranges, or ...
Source code of this in the project
