
Tongari J wrote:
Hi Louis,
2014-08-26 0:01 GMT+08:00 Louis Dionne <ldionne.2@gmail.com>:
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].
Glad to hear :)
Actually I've found an even simpler way:
Nice! And with some small tweaks it works in C++11, assuming you have some implementation of index_sequence: ``` template<char...> struct str {}; template<std::size_t... Ns, class S> auto make_str_impl(index_sequence<Ns...>, S) -> decltype(str<S::get()[Ns]...>()) { return str<S::get()[Ns]...>(); } template<class S> auto make_str(S) -> decltype(make_str_impl(make_index_sequence<sizeof(S::get()) - 1>(), S())) { return make_str_impl(make_index_sequence<sizeof(S::get()) - 1>(), S()); } #define LIT(s) make_str([]() \ { \ struct \ { \ static constexpr decltype(s) get() \ { \ return s; \ } \ } _; \ return _; \ }()) ``` Well VS2013 complains about a static data member in locally defined class but I assume it's a VS bug. Regards, Adam