Скажи, что у меня есть
constexpr const std::uint8_t major = 1;
constexpr const std::uint8_t minor = 10;
constexpr const std::uint8_t bugfix = 0;
и я хочу
constexpr const char* version_string(){ ... }
чтобы вернуть эквивалент "1.10.0"
в этом примере, как мне это сделать?
Я предполагаю, что мне понадобятся оба из них в constexpr
:
- преобразование целого числа в строку
- конкатенация строк
Проблема чисто академическая, и я не вижу практически никакой пользы от ее наличия constexpr
, кроме как «это возможно». Я просто не понимаю, как это может закончиться. Я готов принять решения C++1y, которые работают на GCC 4.9 и Clang 3.4/3.5.
Я считаю, что нашел почти то, что ищу в некоторых японских блогах:
Я посмотрю, что я могу с ними сделать, и, возможно, сам отвечу на этот самопровозглашенный интересный вопрос, когда буду удовлетворен результатом.
strcat(itoa(major),strcat(".",strcat(itoa(minor),strcat(".",itoa(bugfix)))))
или какой-то упрощенный вариант... - person Massa   schedule 03.05.2014