Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Eclipse CDT Indexer does not fully recognize c++11

First of all, I know about the -std=c++11 flag to enable c++11 support and where to place it. I've appended -std=c++11 to Project -> Properties -> C/C++ Build -> Settings -> Tool Settings -> GCC C++ Compiler -> Miscellaneous -> Other Flags and compiling just works fine. But the indexer doesn't get along, for example if I want to use the emplace function of std::map (c++11), it will not find the emplace function.

#include <map>

int main() {
    std::map<int, int> data;
    data.emplace(5,5);

I've also checked out these related questions:

  • Eclipse CDT indexer does not know C++11 containers
  • Enable C++11 in Eclipse CDT (Juno/Kepler/Luna) indexer
  • http://www.eclipse.org/forums/index.php/mv/msg/373462/909018/#msg_909018

Update: Now that I've played around it even doesn't recognize the std::map type, although compiling fine and eclipse finding all headers...

  • Compiler Mingw64 GCC 5.2.0
  • Eclipse Mars 4.5
  • CDT 8.7
like image 658
Matze Avatar asked Sep 18 '15 01:09

Matze


People also ask

How to add c++ perspective in Eclipse?

In Eclipse, go to the "File" menu, then "New", then "C++ Project" if it's there. If not, choose "Project", then find "C/C++" in the list of wizards, click the "+" sign to expand it, and choose "C++ Project". A dialog box will ask whether to open the C/C++ perspective.


1 Answers

Eclipse Mars does it a bit differently than the previous versions.

Step one gets the indexer error highlighting working - covered in Enable C++11 in Eclipse CDT (Juno/Kepler/Luna) indexer linked above. If you've already done all this, I'll be smurfed if I know what you've run into. Mars has been a bit wonky so far.

  1. Go to Project->properties->C/C++ General->Preprocessor Include Paths.
  2. Click the Providers tab.
  3. Click CDT GCC Built-in Compiler settings MinGW
  4. Click Move Up button on the right.
  5. Under Language Settings Provider Options
    1. Click off Use Global provider shared between projects
    2. Add -std=c++1y to the end of the command line in Command to get compiler specs.

By the way, if anyone knows where the global settings are so I can default this behaviour, please let me know.

Step 2 gets the compiler working

  1. Go to Project->properties->C/C++ Build->Settings.
  2. Go to Tool Settings tab.
  3. Expand GCC C++ Compiler
  4. Click Dialect Pick the C++ Standard you wish to target from the Language Standard drop-down.
like image 123
user4581301 Avatar answered Sep 22 '22 15:09

user4581301