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 件のコメント :
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。