我可以使用哪个编译器?

最白目*_*最白目 2 c++ compiler-construction

我必须导入并使用C++项目.但是,如果没有Microsoft Visual Studio,我无法运行它.该项目的作者告诉我,我必须使用Microsoft编译器,因为只有这个可以处理他使用的特定符号(例如,在将其传递给方法时动态创建对象).见例子.

lights.push_back(Light(Vector(dirx,diry,dirz).normalize(), Color(colr, colg, colb)));
Run Code Online (Sandbox Code Playgroud)

我之前必须创建一个矢量对象并将其传递给方法.

谁能告诉我哪些编译器可以使用?我没有足够的位流来下载3 GB的Visual Studio.伟大但不必要的是我可以在Mac OS上使用的编译器.

干杯.

Mic*_*urr 9

任何C++编译器都可以"在将对象传递给函数时动态创建对象"(这些通常称为临时对象或右值).

Visual C++可以做的其他C++编译器通常不能通过非const引用的参数将这些临时对象传递给函数.C++标准专门禁止该行为,但MSVC允许它(微软称之为扩展).

我猜这是项目作者依赖的行为.