我试图使用较短的语法,并避免在各处使用std::
,所以我开始使用新的别名语法。在某些示例中,我看到人们以这种方式使用它:
using json = nlohmann::json;
,并使用std::
进行了此操作,但代码如下:
#include <iostream>
using cout = std::cout;
int main()
{
cout << "Sometext";
return 0;
}
但是出现错误'cout' in namespace 'std' does not name a type
。我知道我可以使用
using std::cout;
但是为什么using cout = std::cout;
不起作用?
编辑:
对所有赞成该问题的人都投了赞成票:我张贴了它,因为我无法通过写错误消息来找到解决方案。是的,作为解决我的问题提到的问题描述了会发生什么,但是当有人遇到这种错误时,他将不会轻易找到解决方案。我只是没有意识到cout
是一个对象。我已经读过类似的问题,但仍然不知道会发生什么。
答案 0 :(得分:16)
using cout = std::cout;
指type alias declaration语法。它类似于typedef
;因此,您尝试声明一个名为cout
的类型,该类型引用先前定义的类型std::cout
。但是std::cout
不是类型名称,它是类型为std::ostream
的对象。
如错误消息所述,它只是在试图告诉您std::cout
没有引用类型名称。