ARM の、テンポラリオブジェクトの参照

class Object{};

class Test{
    void func1( Object obj ){};
    void func2( Object& obj ){};
    void func3( const Object obj ){};
    void func4( const Object& obj ){};
    void test(){
        func1( Object() );
        func2( Object() );
        func3( Object() );
        func4( Object() );
    }
};

こんなクラスを ARM でコンパイルすると、func2 だけエラーが出る。
func1 と func3 はコピーなので大丈夫。
func2 は失敗して、func4 が成功するといういことは、ARM のテンポラリオブジェクトは const オブジェクトとして生成されるっぽい?