#include <iostream>
#define STR_1(S,I) (I < sizeof(S) ? S[I] : '\0')
#define STR_2(S,I) STR_1(S,I), STR_1(S,I+1)
#define STR_4(S,I) STR_2(S,I), STR_2(S,I+2)
#define STR_8(S,I) STR_4(S,I), STR_4(S,I+4)
#define STR_16(S,I) STR_8(S,I), STR_8(S,I+8)
#define STR_32(S,I) STR_16(S,I), STR_16(S,I+16)
#define STR(S) STR_32(S,0)
template <char... Chars>
struct MyString
{
static constexpr char value[] = { Chars..., '\0' };
};
template <char... Chars>
constexpr char MyString<Chars...>::value[];
int main()
{
std::cout << MyString<STR("kernel32.dll")>::value << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKI2RlZmluZSBTVFJfMShTLEkpIChJIDwgc2l6ZW9mKFMpID8gU1tJXSA6ICdcMCcpCiNkZWZpbmUgU1RSXzIoUyxJKSBTVFJfMShTLEkpLCBTVFJfMShTLEkrMSkKI2RlZmluZSBTVFJfNChTLEkpIFNUUl8yKFMsSSksIFNUUl8yKFMsSSsyKQojZGVmaW5lIFNUUl84KFMsSSkgU1RSXzQoUyxJKSwgU1RSXzQoUyxJKzQpCiNkZWZpbmUgU1RSXzE2KFMsSSkgU1RSXzgoUyxJKSwgU1RSXzgoUyxJKzgpCiNkZWZpbmUgU1RSXzMyKFMsSSkgU1RSXzE2KFMsSSksIFNUUl8xNihTLEkrMTYpCiNkZWZpbmUgU1RSKFMpIFNUUl8zMihTLDApCgp0ZW1wbGF0ZSA8Y2hhci4uLiBDaGFycz4Kc3RydWN0IE15U3RyaW5nCnsKICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhciB2YWx1ZVtdID0geyBDaGFycy4uLiwgJ1wwJyB9Owp9OwoKdGVtcGxhdGUgPGNoYXIuLi4gQ2hhcnM+CmNvbnN0ZXhwciBjaGFyIE15U3RyaW5nPENoYXJzLi4uPjo6dmFsdWVbXTsKCmludCBtYWluKCkKewogICAgc3RkOjpjb3V0IDw8IE15U3RyaW5nPFNUUigia2VybmVsMzIuZGxsIik+Ojp2YWx1ZSA8PCBzdGQ6OmVuZGw7Cn0K