

自分の環境のみで起こる現象か確認したいコードがあります。

Visual Studio 2019 Community Ver16.4

[code]

    #include <iostream>
    
    struct Test {
        constexpr Test() : elements{ 1,2,3 } {
        }
        constexpr Test& operator+=(double s) {
            for (auto&& p : elements)
                p += s;
            return *this;
        }
        double elements[3];
    };
    
    int main(){
        constexpr auto res1 = Test{} += 3.0;
        std::cout << "res1(constexpr)" << std::endl;
        for (auto&& p : res1.elements)
            std::cout << p << std::endl;
    
        auto res2 = Test{} += 3.0;
        std::cout << "res2" << std::endl;
        for (auto&& p : res2.elements)
            std::cout << p << std::endl;
    }
    
[/code]

wandboxのclangやGCC、visual studioでもclang-clの場合は期待通りに動きます。  
プラットフォームをVisual Studio 2019
(v142)にしたときのみconstexprのoperator内のforループが動いてないような結果がでるのです。

Visual Studioでの結果（res1の結果がおかしい）

[code]

    res1(constexpr)
    1
    2
    3
    res2
    4
    5
    6
    
[/code]

[wandbox](https://wandbox.org/permlink/8aghr4S9mqKFIUpu)での結果（期待した結果）

[code]

    res1(constexpr)
    4
    5
    6
    res2
    4
    5
    6
    
[/code]


CC BY-SA 4.0
2019-12-10T13:45:39.520
61309
2019-12-10T14:03:57.473
2019-12-10T14:03:57.473
19110
37016
question
c++ visual-c++
VC++においてconstexprのoperatorの中で範囲for文が動かない