Здравствуйте!
В итоге вроде бы решил самым простым способом, без изысков
Хочу:
сonstexpr uintptr_t a = 140721923966320;
cout<<a;
Но: почему-то полагал, что не сработает, и что надо добавить суффикс типа (не "типа", а типа):
uintptr_t ptr = 12345ull;
Размер указателя зависит от платформы, поэтому решил:
#ifdef WIN32 /* например */
#define UPTR_SUFF ul
#elif defined(WIN64)
#define UPTR_SUFF ull
#endif
#define DECLARE_CONST_ADDR_SUFFIX_HELPER(suff) suff
// не работает
#define DECLARE_CONST_ADDR(addr, suff) addr ## DECLARE_CONST_ADDR_SUFFIX_HELPER(suff)
// так тоже
#define DECLARE_CONST_ADDR(addr, suff) addr ## suff
Как быть?
В итоге-то вроде работает по самому простому пути, и в случае чего проще переопределить сам макрос DECLARE_CONST_ADDR или есть вариант задать с помощью UPTR_SUFF?
А если слева будет какой-то объект, который хочет другое, например short unsigned?