If you want some overload to cause a compilation error when it gets selected in overload resolution, you can use the new = delete
feature.
template<typename... Args>
void add_child(Args&&...) const = delete;
This will generate a nice simple error along the lines of "use of deleted function void add_child(Args&&...) const
".