Use variadic template instead of macro for sdo