ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Only available with -std=c++11 or -std=gnu++11 [closed]

asked 2021-01-24 07:27:57 -0600

serhat gravatar image

Hi everyone, I tried to use "range based for loop" and "lambdas" in my programs. Everything was fine in fact. My IDE didn't throw any error or warning at all. After "catkin_make", I see some warnings in my terminal which says:

/home/serhathp/catkin_ws/src/tcp_edu/src/trial_06.cpp:41:9: warning: lambda expressions only available with -std=c++11 or -std=gnu++11

and same for "range based for loop" method. How can I handle this issue? What version of compiler do I use in my system? I typed some code in my program related to this issue:

   if (__cplusplus == 201703L) std::cout << "C++17\n";
    else if (__cplusplus == 201402L) std::cout << "C++14\n";
    else if (__cplusplus == 201103L) std::cout << "C++11\n";
    else if (__cplusplus == 199711L) std::cout << "C++98\n";
    else std::cout << "pre-standard C++\n";

As an output, I gave C++98. Maybe this would be useful information I don't know. Probably related to this issue, I can't use "range based for loop" correctly if I run my program. (I can compile my program actually) It doesn't work like it should! Any relationship? How can I change my compiler version in my system. I want it to be C++11 especially. I'm kind of confused and new at this environment. Any help?

UBUNTU 16.04 - Kinetic - Ros1. I use Visual Studio as IDE.

Thank You!

edit retag flag offensive reopen merge delete

Closed for the following reason the question is answered, right answer was accepted by serhat
close date 2021-01-31 12:51:31.381068

1 Answer

Sort by ยป oldest newest most voted

answered 2021-01-24 07:33:32 -0600

In your CMakeLists, try adding this line:


edit flag offensive delete link more


I appreciate your answer. The answer was right before my eyes :D I hadn't ever realized. Thank you so much.

cmake_minimum_required(VERSION 3.0.2)

## Compile as C++11, supported in ROS Kinetic and newer
# add_compile_options(-std=c++11)
serhat gravatar image serhat  ( 2021-01-24 07:53:06 -0600 )edit

No problem. Have fun!

gstavrinos gravatar image gstavrinos  ( 2021-01-24 08:13:01 -0600 )edit

Question Tools

1 follower


Asked: 2021-01-24 07:27:57 -0600

Seen: 713 times

Last updated: Jan 24 '21