gcc では通るが、vs2015 では 38行目でエラー。
しかし p3 にカーソルを合わせると・・・

非標準拡張だし文句言えないか・・・。
15 行目の #if 1 を 0 にすれば問題は解消するが色々作戦の練り直しだな。
#include <iostream>
class Point
{
public:
constexpr Point(const Point& p)
: x(p.x), y(p.y)
{
}
constexpr Point(int x, int y)
: x(x), y(y)
{
}
public:
#if 1
union
{
struct
{
int x, y;
};
int v[2];
};
#else
int x, y;
#endif
};
constexpr Point operator + (const Point& lhs, const Point rhs)
{
return Point(lhs.x + rhs.x, lhs.y + rhs.y);
}
int main()
{
constexpr Point p1(1, 2);
constexpr Point p2(3, 4);
constexpr Point p3 = p1 + p2;
std::cout << p3.x << ", " << p3.y << std::endl;
return 1;
}
0 件のコメント :
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。