TONGARI J
Hi all,
I found a way to make CT strings in C++14, with the help of generic lambda.
FYI, Ábel Sinkovics has presented a c++11 CT string in his mpllibs::metaparse[1] lib before, but it requires some PP trick which has a predefined limit MPLLIBS_LIMIT_STRING_SIZE.
The new trick doesn't suffer from the limitation, but it assumes a null-terminated string. It's fairly simple, see below:
```c++ template
struct str {}; template<char c> struct ch {};
template<int n> using idx = std::integral_constant
; template
auto accum(S s, ch<c>, str ) { return accum(s, s(idx ()), str ()); } template
auto accum(S, ch<0>, str ret) { return ret; } template<class S> auto make_str(S s) { return accum(s, s(idx<0>()), str<>()); }
#define LIT(s) make_str([](auto idx) { return ch
(); }) ```Then you can use `doSomething(LIT("abc"))` in your code. What do you think?
This is genius, thanks a lot for posting. I've been searching for a way to do this to implement compile-time strings in Boost.Hana[1]. Louis [1]: https://github.com/ldionne/hana -- View this message in context: http://boost.2283326.n4.nabble.com/Compile-Time-String-in-C-14-tp4666747p466... Sent from the Boost - Dev mailing list archive at Nabble.com.