У меня есть основной и вспомогательный номер версии, доступный в двух препроцессорах, определяет
#define i 123
#define f 4567
и необходимо предоставить функцию, которая возвращает их в виде двойного значения, где старшее число является целым числом, а младшее число - дробной частью.
Помимо повторения этих цифр, все решения, которые я мог придумать, довольно выразительны; см. например здесь:
https://godbolt.org/z/rg3GyR
Без constexpr это получилось бы еще более выразительным, но могло бы быть и так.
В мире MS мне сошло с рук
#define me i.f
double df() { return me; }
но Standard C ++ не предлагает такой возможности.
Мне интересно, существует ли простой стандартный совместимый способ сделать это.