Closed scpeters closed 8 years ago
Finding the correct version will be a challenge since neither this nor urdfdom
nor urdfdom_headers
create cmake version config files. Also, the cmake config file for urdfdom
currently calls find_package without a version specified when searching for its dependencies (urdfdom_headers
and console_bridge
).
In ign-math
(used by gazebo and sdformat), we have been appending the major version number to the name of the pkg-config and cmake config files. I'm not sure if that's desired in this case.
The current target platforms for ROS are defined in REP 3 (http://www.ros.org/reps/rep-0003.html). For all previous ROS releases C++03 was the minimum requirement and and that's why it can currently not use C++11.
Therefore it can only be considered for future releases. You might want to start a discussion about the minimum C++ version required for the next ROS version (k-turtle, May 2016). But please keep in mind that this implies that ROS would not be compilable anymore on platform which don't have a C++11 compatible compiler.
The default version of gcc in Ubuntu 12.04 (Precise) doesn't support c++11, but it is supported in 14.04 (trusty) and up. Since the minimum supported Ubuntu version for Jade is trusty, perhaps we could do it for K-turtle?
Should I start a thread on ros-users
or is there a better venue?
I'd suggest a PR to REP 3 with a compatible proposal for kinetic and announcement of the discussion on ros-users@
to let people know the discussion is going on.
After looking briefly in the code it looks like that console_bridge
is using boost only internally in cpp files and does not expose it in the headers. If the usage of C++11 gets accepted that should be easy to update.
In other cases where the types are being exposed through the API it might be significantly more effort to update if every code using the API needs to be updated to.
Indeed, I have started a discussion at https://github.com/ros/urdfdom/issues/62 where boost shared pointers are used in the public API.
In October, the ros2 branch implemented these changes:
https://github.com/ros/console_bridge/commit/787c4876ce75b1a6c084784439942227781c1b07
We've also decided that C++11 compatibility will be required for Kinetic.
So it sounds like the way forward for this issue will be easy enough.
@jacquelinekay thanks for the pointer to the ros2
branch. I'll add those changes to #25
fixed by #25
This package uses just a very small amount of boost, much less than urdfdom (related issue: https://github.com/ros/urdfdom/issues/62 ). So it should be easier to use this as a test case for how to start the move to c++11. I have made the necessary changes in https://github.com/scpeters/console_bridge/commit/255abf61ee982fd4f054a1b2cb91b4dd39cb87a0 but I wanted to wait before submitting a pull request to ask what the new branch should be called and what numbering to use.
Some questions:
release-0.2
) and make the master branch use c++11?@wjwwood