Eigen::VectorXdを戻り値とする関数の出力を受け取る変数の宣言に、型推論を用いた時の挙動についての疑問


＜実行環境＞  
\- OS: OSX 10.11.3  
\- コンパイラ: clang++  
以下は、clang++ -vの出力  
Apple LLVM version 7.0.2 (clang-700.1.81)  
Target: x86_64-apple-darwin15.3.0  
Thread model: posix  
\-
非標準ライブラリとして、Eigenを使用（<http://eigen.tuxfamily.org/index.php?title=Main_Page>）  
\- C++11の機能を使用  
＜コード＞

[code]

    #include <iostream>   
    #include <Eigen/Core>
    
    using namespace std;
    using namespace Eigen;
    
    class A{
    private:
        VectorXd ma;
    public:
        A(VectorXd a = VectorXd::Ones(1)){
            ma = a;
        }
    
        VectorXd geta(){
            return ma;
        }
    };
    
    class B : public A{
    public:
       B(VectorXd a = VectorXd::Ones(1)): A(a){
           // In the following line, if you use the type name "VectorXd" and don't use "auto", you can get the normal result. 
           const auto b = 2 * geta();
    
           // If you release the comment out the following line, even if using the "auto" during initialization of b, you can get the normal result. 
           // const auto c = geta();
    
           cout << "b = " << b << endl;
           cout << "b = " << b << endl;
       }
    };
    
    int main() {
        VectorXd la = 2 * VectorXd::Ones(1);
        cout << "la = " << la << endl;
        B test = B();
    
        return 0;
    }
    
[/code]

＜実行結果＞

  1. 上記のコードをそのまま実行した場合の出力  
la = 2  
b = 2  
b = 4

  2. Class Bのコンストラクタ内の変数bの宣言・初期化時に型推論（auto）を使わずに、VectorXdという型を用いた場合の出力  
la = 2  
b = 2  
b = 2

  3. 変数bの宣言・初期化時には型推論を使用するが、その次の行でconst auto c = geta()という式を評価する場合の出力  
la = 2  
b = 2  
b = 2

＜質問内容＞  
修正を行う前のコードだと、意図していた動作（la及びbの２度の出力結果が同じ値を示す）にならない理由を伺いたです。bに型情報を与えることが解決策になることは、確かめることができましたが、なぜこのような動作になるのかが、未熟な私には理解できません。  
ご教示いただけると幸いです。




Eigenライブラリでは「式テンプレート(ET; Expression
Template)」とよばれる[テクニックを利用](http://eigen.tuxfamily.org/dox/TopicLazyEvaluation.html)しているのですが、この技法は`auto`による変数型推論との相性がよくありません。

[混ぜるな危険! Eigenとauto](http://qiita.com/sakisakira/items/7c6952e59e958cefe7fa)
に詳しい説明がありましたのでそちらに譲ります。




Eigenライブラリでは「式テンプレート(ET; Expression
Template)」とよばれる[テクニックを利用](http://eigen.tuxfamily.org/dox/TopicLazyEvaluation.html)しているのですが、この技法は`auto`による変数型推論との相性がよくありません。

[混ぜるな危険! Eigenとauto](http://qiita.com/sakisakira/items/7c6952e59e958cefe7fa)
に詳しい説明がありましたのでそちらに譲ります。

