c++ - Why can I call getline without using std::getline? -


i following c++ primer book , trying out code examples. intrigued one:

#include <iostream> #include <string>  using std::string; using std::cin; using std::cout; using std::endl;  int main() {     string line;     while (getline(cin,line))         cout << line << endl;     return 0; } 

before compiling code guessing compilation fail, since not using

while (std::getline(cin,line)) 

why getline in global namespace? understand, should happen if used

namespace std; 

or

using std::getline; 

i using g++ version 4.8.2 on linux mint debian edition.

this argument dependent lookup.

unqualified lookup (what doing when call getline() instead of std::getline()) start trying normal name lookup getline. find nothing - have no variables, functions, classes, etc. in scope name.

we in "associated namespaces" of each of arguments. in case, arguments cin , line, have types std::istream , std::string respectively, associated namespaces both std. redo lookup within namespace std getline , find std::getline.

there many more details, encourage read reference cited. process additionally known koenig lookup.


Comments

Popular posts from this blog

python - pip install -U PySide error -

arrays - C++ error: a brace-enclosed initializer is not allowed here before ‘{’ token -

cytoscape.js - How to add nodes to Dagre layout with Cytoscape -