2016年7月9日土曜日

[vs2015] Nameless union and struct problem. 2

前回エントリーに若干絡む。
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 件のコメント :

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。