<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">Using  g++ 4.8.3,  if you delete<br>
          typedef Scalar value_type;<br>
      at line 24 of<br>
         
<a class="moz-txt-link-freetext" href="https://projects.coin-or.org/CppAD/browser/trunk/cppad/example/eigen_plugin.hpp">https://projects.coin-or.org/CppAD/browser/trunk/cppad/example/eigen_plugin.hpp</a><br>
      the error in compiling the example below goes away.<br>
      <br>
      CppAD expects <br>
          Vector::value_type<br>
      to be the type of the elements of a vector; see<br>
          <a class="moz-txt-link-freetext" href="http://www.coin-or.org/CppAD/Doc/simplevector.xml#Value%20Type">http://www.coin-or.org/CppAD/Doc/simplevector.xml#Value%20Type</a><br>
      <br>
      This is the same as for the C++ standard vector; as can be seen by
      searching for value_type on<br>
          <a class="moz-txt-link-freetext" href="http://www.cplusplus.com/reference/vector/vector/">http://www.cplusplus.com/reference/vector/vector/</a><br>
      <br>
      I wanted to ask about this on the eigen user's list<br>
         
<a class="moz-txt-link-freetext" href="http://listengine.tuxfamily.org/lists.tuxfamily.org/eigen/2014/12/maillist.html">http://listengine.tuxfamily.org/lists.tuxfamily.org/eigen/2014/12/maillist.html</a><br>
      but I did not see your posting there.<br>
      <br>
      Brad<br>
      <br>
      <br>
      On 12/17/2014 11:33 AM, Braun, Michael wrote:<br>
    </div>
    <blockquote cite="mid:C1E0B23C-F1A1-4C5B-9647-1FEBDEE26E44@smu.edu"
      type="cite">
      <meta http-equiv="Context-Type" content="text/html;
        charset=us-ascii">
      <div class="">I posted this same question on the Eigen forum
        because I do not know if it is really an Eigen issue or a CppAD
        issue.</div>
      <div class=""><br class="">
      </div>
      <div class="">As part of a larger application that uses CppAD, I
        am trying to fill an Eigen sparse matrix.  The following MWE
        does not use CppAD, and when the first line (#define
        EIGEN_MATRIX_PLUGIN ... ) is commented out, this code runs fine.
         </div>
      <div class=""><br class="">
      </div>
      <div class="">
        <div class="">
          <div class="">#define EIGEN_MATRIX_PLUGIN
            &lt;cppad/example/eigen_plugin.hpp&gt;</div>
          <div class=""><br class="">
          </div>
          <div class="">#include &lt;Eigen/Eigen&gt;</div>
          <div class="">#include &lt;Eigen/Sparse&gt;</div>
          <div class="">#include &lt;cppad/cppad.hpp&gt;</div>
          <div class="">#include &lt;cppad/example/cppad_eigen.hpp&gt;</div>
          <div class=""><br class="">
          </div>
          <div class="">void triptest () {</div>
          <div class="">  typedef Eigen::Triplet&lt;double&gt; TT;</div>
          <div class=""><br class="">
          </div>
          <div class="">  int n = 5;</div>
          <div class="">  std::vector&lt;TT&gt; trips; </div>
          <div class="">  Eigen::SparseMatrix&lt;double&gt; M(n,n);</div>
          <div class="">  </div>
          <div class="">  for (int i=0; i&lt;n; i++) {   </div>
          <div class="">    trips.push_back (TT(i,i,i*i));</div>
          <div class="">  }</div>
          <div class="">  M.setFromTriplets(trips.begin(), trips.end());</div>
          <div class="">  std::cout &lt;&lt; M &lt;&lt; "\n";</div>
          <div class="">  </div>
          <div class="">}</div>
          <div class=""><br class="">
          </div>
          <div class="">int main (void)</div>
          <div class="">{   </div>
          <div class="">  triptest();</div>
          <div class="">  return 0;</div>
          <div class="">}</div>
        </div>
      </div>
      <div class=""><br class="">
      </div>
      <div class=""><br class="">
      </div>
      <div class="">But when left in, I get the following compile error:</div>
      <div class=""><br class="">
      </div>
      <div class="">
        <div class="">
           $ clang++ -I/opt/cppad/include
          -I$R_HOME/library/RcppEigen/include trips.cpp -o trips.so</div>
        <div class="">
          In file included from trips.cpp:4:</div>
        <div class="">
          In file included from .../Eigen/Sparse:19:</div>
        <div class="">
          In file included from .../Eigen/SparseCore:40:</div>
        <div class="">
          <b class="">/Library/Frameworks/R.framework/Resources/library/RcppEigen/include/Eigen/src/SparseCore/SparseMatrix.h:957:11:
          </b><span class=""><b class="">error: </b></span></div>
        <div class="">
          <b class="">      call to member function 'reserve' is
            ambiguous</b></div>
        <div class="">
              trMat.reserve(wi);</div>
        <div class="">
          <b class="">    ~~~~~~^~~~~~~</b></div>
        <div class="">
          <b class="">.../Eigen/src/SparseCore/SparseMatrix.h:1013:13:
            note: </b></div>
        <div class="">
                in instantiation of function template specialization</div>
        <div class="">
               
          'Eigen::internal::set_from_triplets&lt;std::__1::__wrap_iter&lt;Eigen::Triplet&lt;double,
          int&gt; *&gt;,</div>
        <div class="">
                Eigen::SparseMatrix&lt;double, 0, int&gt; &gt;'
          requested here</div>
        <div class="">
            internal::set_from_triplets(begin, end, *this);</div>
        <div class="">
          <b class="">            ^</b></div>
        <div class="">
          <b class="">trips.cpp:18:5: note: </b>in instantiation of
          function template specialization
          'Eigen::SparseMatrix&lt;double, 0,</div>
        <div class="">
               
          int&gt;::setFromTriplets&lt;std::__1::__wrap_iter&lt;Eigen::Triplet&lt;double,
          int&gt; *&gt; &gt;' requested here</div>
        <div class="">
            M.setFromTriplets(trips.begin(), trips.end());</div>
        <div class="">
          <b class="">    ^</b></div>
        <div class="">
          <b class="">.../Eigen/src/SparseCore/SparseMatrix.h:270:17:
            note: </b></div>
        <div class="">
                candidate function [with SizesType =
          Eigen::Matrix&lt;int, -1, 1, 0, -1, 1&gt;]</div>
        <div class="">
              inline void reserve(const SizesType&amp; reserveSizes,
          const typename SizesType::value_type&amp; enableif =
          typenam...</div>
        <div class="">
          <b class="">                ^</b></div>
        <div class="">
          <b class="">.../Eigen/src/SparseCore/SparseMatrix.h:276:17:
            note: </b></div>
        <div class="">
                candidate function [with SizesType =
          Eigen::Matrix&lt;int, -1, 1, 0, -1, 1&gt;]</div>
        <div class="">
              inline void reserve(const SizesType&amp; reserveSizes,
          const typename SizesType::Scalar&amp; enableif =</div>
        <div class="">
          <b class="">                ^</b></div>
        <div class="">
          <b class="">.../Eigen/src/SparseCore/SparseMatrix.h:256:17:
            note: </b></div>
        <div class="">
                candidate function not viable: no known conversion from
          'Matrix&lt;Index, Dynamic, 1&gt;' to 'Index' (aka 'int') for
          1st</div>
        <div class="">
                argument</div>
        <div class="">
              inline void reserve(Index reserveSize)</div>
        <div class="">
          <b class="">                ^</b></div>
      </div>
      <div class=""><b class=""><br class="">
        </b></div>
      <div class=""><br class="">
      </div>
      <div class="">Any idea what's going on?  I have been able to
        narrow the problem directly to that first #define.  Also, this
        appears to happen only with EIGEN_MATRIX_PLUGIN, and not ARRAY
        or SPARSEMATRIX.</div>
      <div class=""><br class="">
      </div>
      <div class="">Thanks,</div>
      <div class=""><br class="">
      </div>
      <div class="">Michael</div>
      <div class=""><br class="">
      </div>
      <div class=""><br class="">
      </div>
      <div class=""><br class="">
      </div>
      <br class="">
      <div class="">
        <div class="">--------------------------</div>
        <div class="">Michael Braun</div>
        <div class="">Associate Professor of Marketing</div>
        <div class="">Cox School of Business</div>
        <div class="">Southern Methodist University</div>
        <div class="">Dallas, TX 75275</div>
        <div class=""><a moz-do-not-send="true"
            href="mailto:braunm@smu.edu" class="">braunm@smu.edu</a></div>
        <div class=""><br class="">
        </div>
        <br class="Apple-interchange-newline">
      </div>
      <br class="">
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
CppAD mailing list
<a class="moz-txt-link-abbreviated" href="mailto:CppAD@list.coin-or.org">CppAD@list.coin-or.org</a>
<a class="moz-txt-link-freetext" href="http://list.coin-or.org/mailman/listinfo/cppad">http://list.coin-or.org/mailman/listinfo/cppad</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>