Lisp-style C++ template meta programming
github.com
Lisp-style C++ template meta programming
1–10 of 18 posts
Re: Lisp-style C++ template meta programming
#2Re: Lisp-style C++ template meta programming
#3That could be pretty cool, I wonder what it does for compile time though.
Re: Lisp-style C++ template meta programming
#4That could be pretty cool, I wonder what it does for compile time though.
Re: Lisp-style C++ template meta programming
#5Re: Lisp-style C++ template meta programming
#6if this is a C++17 library why couldn't you use `constexpr` evaluation and not murder your compilation time?
Re: Lisp-style C++ template meta programming
#7However it is still a few years away to be widely deployed, and a few niceties have been postponed into C++29.
Re: Lisp-style C++ template meta programming
#8if this is a C++17 library why couldn't you use `constexpr` evaluation and not murder your compilation time?
On the other hand, C++ template metaprogramming, as an esolang, is fun to tame and experiment with.
Re: Lisp-style C++ template meta programming
#9if this is a C++17 library why couldn't you use `constexpr` evaluation and not murder your compilation time?
Template metaprogramming isn't really suited for this task, the prime sieve here serves only as a proof of concept, meant to show the capabilities of this style. But there are cases where `constexpr` is not applicable, especially when involving type manipulations. On the other hand, C++ template metaprogramming, as an esolang, is fun to tame and experiment with.
> On the other hand, C++ template metaprogramming, as an esolang, is fun to tame and experiment with.
Is it an esolang at this point? I feel old.
Re: Lisp-style C++ template meta programming
#10GCC, surprisingly, was quite good at generating SIMD code from it and eliminating temporary data vectors. GCC was even quite good at explaining why it didn't emit SIMD that I wanted it to emit. Much to my surprise GCC was better in this regard than Clang. From what I had read about Clang at that time, it should have been the otherway round. The error messages were better too (wonders of competition).
I quite liked it. It was a loads of fun. I would however be wary of using it in anger.
The problem is, this sublanguage feels more like a dynamically typed language where errors would be thrown deep in the instantiation chain when it ultimately failed to instantiate.
There was no type-system to guide you ahead-of-time that what you are trying to do would eventually fail to instantiate.
The code got lost when Bitbucket stopped it's support for Mercurial. I still likely have it somewhere in my old files.
Later I wanted to rewrite this in D but never started (thrown out of my university because I graduated).
[0] https://en.wikipedia.org/wiki/Deforestation_(computer_scienc...