As this reminds me of digit grouping my first clumsy approach without C++14
would be
#define INTGROUPED1(a) (a%1000)
#define INTGROUPED2(a,b) (a%1000*1000 + b%1000)
#define INTGROUPED3(a,b,c) (a%1000*1000000 + b%1000*1000 + c%1000)
int v1 = INTGROUPED1( 123);
int v2 = INTGROUPED2( 123,123);
int v3 = INTGROUPED3( 23,123,123);
but I would use such tricks rather in a private context.
Just consider someone writing
INTGROUPED3(1234,1234,1234); //This would be (234,234,234) without a compiler complaining
EDIT1:
Maybe a better aproach would be using the ## preprocessor operator
#define NUM_GROUPED_4ARGS(a,b,c,d) (##a##b##c##d)
int num = NUM_GROUPED_4ARGS(-2,123,456,789); //int num = (-2123456789);
This is more like WYSIWYG but not immune against misuse. E. g. you might wnat the compiler to complain about
int num = NUM_GROUPED_4ARGS(-2,/123,456,789); //int num = (-2/123456789);
but it will not.