For example, take this:
/// A wrapper for _AddComponent that allows us to pretend we're using normal named arguments
#define AddComponent(typepath, arguments...) _AddComponent(list(typepath, ##arguments))
It'd be useful if you could do something like this:
/// A wrapper for _AddComponent that allows us to pretend we're using normal named arguments
#define AddComponent(typepath, arguments...) (_AddComponent(list(typepath, ##arguments)) as typepath)
So, when using the macro, you can do stuff like this:
thingy.AddComponent(/datum/component/whatever).component_proc()