Questions tagged [template-meta-programming]
For code that uses templates to generate compile-time executed code. For ordinary use of templates, use the 'template' tag instead.
277 questions
2
votes
0
answers
182
views
Namespace-scope try_lock_for / try_lock_until pt. 2
This is my second iteration of implementing try_lock_for/try_lock_until function templates in which I've cherry-picked a bunch ...
4
votes
2
answers
124
views
Implementing views and slicing for arbitrarily nested `std::vector`s in a header-only library
I implemented a templated vector_view class that holds a reference to an std::vector and provides the following operations:
...
6
votes
1
answer
236
views
A generic function that reads a line of numeric values from a file
I'm writing a library of IO functions for my physics laboratory class. In the meanwhile, I'm hoping to learn more about generic programming and C++20 concepts.
Some context
I usually came home from ...
2
votes
1
answer
113
views
Pattern matching with predicates support
TL;DR
https://godbolt.org/z/TMfb8z99h
...
2
votes
1
answer
117
views
Member detection within a class
Needed to do some Meta programming.
I needed to check if a class has a specific member (one case a member variable second case a member type (two distinct use cases)).
Since I am writing a library, I ...
4
votes
2
answers
503
views
Compile time string manipulation in C++
I recently had to work on some conversion of literal strings and wondered if that could be done at compile time using template meta programming. I couldn't find many examples online, so I started ...
7
votes
2
answers
256
views
Function composition in the context of data processing pipelines
Prior Notification
This follows a previous review of mine that addressed the core helper function named make_skippable.
The composition implementation presented ...
3
votes
2
answers
182
views
Extending callable signature with std::optional in context of function composition (make_skippable)
(Please note: the post about the compose implementation announced below is now available.)
This is about decorating callables by making their argument and return value to be a ...
3
votes
1
answer
127
views
(C++) Template code for adding tagging types to add additional context
Below is a piece of template code which allows for adding a Tag to structure or class types.
...
3
votes
1
answer
191
views
C++ printing library with templates
I was mad C++ did not have support for printing containers. I also could not find a header only library for printing containers so I decided to make my own. My goals were: 1) practicing templates 2) ...
3
votes
1
answer
172
views
Partial specialization of class template with minimal code duplication
I have a class template that stores an std::optional<T>. A very reduced version of the class template looks like this:
...
2
votes
1
answer
267
views
Template for making distinct numeric type aliases
I've tried to make a small template for the creation of distinct (incompatible) numerical types. For example both row and column indices are usually represented as the same underlying type. However it ...
4
votes
1
answer
1k
views
C++ enum to string conversion utility
I needed to find a way to convert a bunch of enums to string for displaying in C++. The two main ways I found when searching was using dark magic macros or voodoo magic template metaprogramming.
As I ...
4
votes
0
answers
68
views
Variadic pack class providing operations over types without constructing objects of those types
Sometimes I find I want to call a function passing each of a set of types as a template parameter, but without needing to construct an object of those types. I also may want to do this in multiple ...
4
votes
2
answers
253
views
Transpose types variadicly
I want to do template metaprogramming to compute the conversion from std::variant<Ts...> to ...
3
votes
1
answer
121
views
scoped timer class (3rd revision)
Again, here is the previous question. I have (re)revised my custom scoped timer using the valuable feedback I got from a helpful member of this community. However I feel the need to ask this question ...
-2
votes
2
answers
115
views
Is there a more elegant solution to store and process different types using templates? [closed]
I'm trying to create some system for profiling and I need to track different data types (double, float int). I have a container that can hold some base type, and then perform actions on the concrete ...
4
votes
1
answer
2k
views
Template to unpack arguments to a std::function
I am writing some C++ code to interact with an external scripting language. I want to be able to register arbitrary C++ callable code as functions to be called from the script.
The scripting library ...
3
votes
1
answer
661
views
C++: Visit Any Type Holding Other Types (`std::any`, `std::variant`, etc.)
Intro
I want to visit the value held by a class, which could be of multiple types. This class is very similar to a std::any, so I will be using this in this ...
2
votes
1
answer
221
views
C++17 view over the Ith elements of tuples in containers of tuples
For mainly didactic reasons, I have designed my ElementsView<I, T> class template, which provides a view over the I th ...
1
vote
2
answers
117
views
C++ variardic universal template for unknown types, used to handle multiple network protocols
I am creating a template function with variardic arguments, to handle a specific classes that have some interface, method, member or whatever is specialized in a specialization area. However I came to ...
3
votes
1
answer
2k
views
visit for std::any
While solving an online excersise I have written some basic implementation for a visit function that works with std::any.
The ...
2
votes
1
answer
771
views
Binding move-only objects to functions (for a thread pool implementation)
I recently implemented a thread pool using std::functions. I only supported functions taking no arguments on the assumption that there would be no need to have them ...
3
votes
1
answer
3k
views
Mapping between Enum <-> Enum <-> String view
I've been working on some kind of mapper that would allow me to map between types.
My objectives:
it should allow mapping between two enums
it should allow mapping enum to string_view
it should allow ...
2
votes
1
answer
389
views
An rough implementation of `std::is_constructible`
As a challenge/fun activity/task, I have implemented my version of std::is_constructible.
Here is the source code:
...
2
votes
1
answer
349
views
Implementation of versatile IIR digital filter in C++
I have realized that all the digital filters of the IIR type have the same structure. They are described by difference equation in following form:
$$
y(k) = b_0\cdot x(k) + b_1\cdot x(k-1) + \ldots +...
2
votes
0
answers
204
views
invocable_traits v5
Goal: implement traits that for anything callable return its arity, return type and the argument types. Since pointers to data members are also callable, those should be handled (and be considered 0-...
1
vote
1
answer
240
views
invocable_traits v4
Update: there is a new version of this code: v5 is posted here
Goal: implement traits that for anything callable return its arity, return type and the argument types. Since pointers to data members ...
3
votes
0
answers
81
views
invocable_traits v3
Update: there is a new version of this code: v4 is posted here
Goal: implement traits that for anything callable return its arity, return type and the argument types. Since pointers to data members ...
3
votes
1
answer
107
views
invocable_traits
Update: there are new versions of this code: v3 is posted here and v4 is posted here
Goal: implement traits that for anything callable return its arity, return type and the argument types. Since ...
4
votes
1
answer
1k
views
c++20 compile time string utility v2
This is a follow up on c++20 compile time string utility, as suggested by G. Sliepen posted as a new question, so it can be reviewed on its own.
The following code has suggested improvements from the ...
5
votes
2
answers
4k
views
c++20 compile time string utility
While upgrading some meta-program running in production for years to the latest (c++20) standard, I rewrote this particular compile time string utility.
Even though this new version produces desired ...
1
vote
2
answers
957
views
Automatically registering a class using header-only templated classes
I'm trying to reduce the boilerplate of a lot of header-only classes I'm using. Each of these classes must go through a registration step. I want this step to be defined in the same file as the class ...
1
vote
1
answer
156
views
One-time dynamic, many-time *almost* static type dispatch
Annoyed at the tension between good software design principles that require well-defined delimitations between interface and implementations, and the requirements for critical code to run fast, which ...
9
votes
3
answers
5k
views
C++17 : Typelist manipulation
I'm reading "Modern C++ Design"(A. Alexandrescu, 2002) and practicing basic TMP in chapter 3. Typelists. Since the book is quite dated, I revised example codes in C++17-esque manner.
Feel ...
1
vote
1
answer
991
views
template function for conditional dereference
I don't know why there's no such function in std (at least I didn't find one). I need a conditional template function to return a reference to an object of T. ...
3
votes
1
answer
1k
views
Object to ignore unused function output parameters
In our software we have some functions that return information through lvalue reference parameters, which, in some cases, are irrelevant for the calling code. For that reason, I tried to come up with ...
1
vote
1
answer
443
views
Handle C++ templates in Qt5
Searching for a solution to my problem I've read many posts regarding templates in Qt (including those on SE) and didn't find a complete solution (or I should say a complete example of a solution) so ...
6
votes
1
answer
623
views
Implementing apply_each for tuple c++
I'm implementing apply_each for tuple-like object as a general function which may be a combined version of for_each and ...
2
votes
1
answer
319
views
Creating a structural type array wrapper to be qualified as non-type template parameter C++
I'm trying to replicate std::array but with modifications that I should put the private data member to the public so the class template ...
2
votes
1
answer
136
views
Computing nth Tribonacci number at compile time using C++ template metaprogramming facilities
I have this small C++ program for computing the \$n\$th Tribonacci number at compile-time. My main concern is: is it possible to get rid of the statickeyword (I had ...
1
vote
1
answer
1k
views
A multi key/value type "folded" map class template
I have recently come across a use case where I need to lump many maps into a single container. These maps can have different combinations of key/value types, but they all differ from one another.
For ...
4
votes
3
answers
4k
views
De-/Serialization of structs representing TCP messages
I wrote two template functions to serialize and deserialize structs representing messages to be sent and received via a TCP socket:
...
2
votes
0
answers
330
views
Generic way to access private/protected members
Motivation
I and the company is working on building C++ SDK automatically for several platforms, including Windows.
In summary, I have to test somehow if the private member of function pointers' type ...
7
votes
3
answers
2k
views
C++ Generic Callback class with removable listeners by unique id
I'm quite new to the STL.
Does this make sense? Is there a better way of removing the listeners instead of using shared_ptr while keeping the code short and simple? Is there something in the STL to ...
3
votes
1
answer
253
views
Implementation of the basic matrix operations for embedded application in C++
I have been developing a control software in C++ and for implementation of the control algorithms I need basic matrix operations like addition, subtraction, multiplication and multiplication by scalar....
2
votes
1
answer
1k
views
C++ generic, multi-dimensional linear interpolation template
Use-case in a nutshell: Interpolate fixed-sized data (a lookup table) that provides output values for combinations of a (fixed) number of inputs. The appropriate scaling is done externally, each axis ...
5
votes
1
answer
714
views
Binary IO inspired by struct pack
About
I'm writing a header-only template library for helping with binary IO. It is inspired by pack-d, which is in turn inspired by Python's struct module. I've only finished the output part and ...
4
votes
3
answers
480
views
Calculate the centroid of a collection of complex numbers
In working on another problem, one component I needed was to calculate the centroid of a collection of complex objects. The well-known way to calculate this is to simply average the real and ...
-1
votes
2
answers
4k
views
struct,template arguments, C++ [closed]
I am writing color model logic in C++. I ask review in defining limits for the color model, by saying Limits I mean this.
Consider a struct which represents ...