If I understand correctly, the important part is not setting the standard too low. If it’s too low then headers included from some dependencies might not build with that standard. Officially ROS Noetic targets C++14, so I’d recommend any solution that uses C++14 by default. I’d probably recommend target_compile_features(target PUBLIC cxx_std_14), but I also haven’t tried that in ROS Noetic (docs)