I'm trying to use shorter syntax and avoid using std::
everywhere, so I started using new alias syntax. In some examples I saw people using it this way:
using json = nlohmann::json;
and tried this with std::
, but with code below:
#include <iostream>
using cout = std::cout;
int main()
{
cout << "Sometext";
return 0;
}
but I get error 'cout' in namespace 'std' does not name a type
. I know I can use
using std::cout;
but why using cout = std::cout;
doesn't work?
EDIT:
To all that votes to close this question: I posted it, because I wasn't able to find a solution, by writing by error message. Yes, question mentioned as one that has solution for my problem describes what happens, but when someone gets this sort of error, he will not find a solution easily. I just didn't realize, that cout
is an object. I've read some questions like that, but still had no clue what happens.
using cout = std::cout;
refers to type alias declaration syntax. It's similar to typedef
; so you're trying to declare a type named cout
that refers to a previously defined type std::cout
. But std::cout
is not a type name, it's an object with type of std::ostream
.
As the error message said, it's just trying to tell you that std::cout
doesn't refer to a type name.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With