Cos'è un Eigen :: array (non Eigen :: Array)

Sep 02 2020

Sto usando la libreria dei tensori eigen e mi sembra che il metodo shuffle () voglia come input un oggetto Eigen :: array <type, int>.

Nella mia implementazione ho uno std :: list di int che devo passare a shuffle (ovviamente conosco il secondo int param (il rank) solo in fase di esecuzione!)

Risposte

3 dtell Sep 02 2020 at 01:17

Non molto tempo fa il modulo Tensor di Eigen era compatibile con C ++ 03. Ciò implica che std::arraynon è disponibile. Per questo motivo il modulo Tensor ha definito la propria Eigen::arrayclasse che è in realtà un typedef per std::arrayse C ++ 11 è disponibile.

Il file non supportato / Eigen / CXX11 / src / util / EmulateArray.h contiene qualcosa che si riduce a (pseudo-codice)

#if C++11 not available
  // Define a custom std::array like Eigen::array class
#else
  template <typename T, std::size_t N> using array = std::array<T, N>;
#endif

Il modulo Tensor ha abbandonato la compatibilità con C ++ 03 e parti di questo codice potrebbero essere probabilmente rimosse.