Je suis en mesure d'établir la suite d'une std = C++ 11 code requis avec g ++ en utilisant la commande suivante:erreur avec le compilateur Intel C: identificateur "_Compare" est indéfini
g++ test.cpp -std=c++11 -Wl,-rpath,/share/apps/gcc/6.3.0/lib64
le code suivant:
#include <chrono>
#include <map>
#include <memory>
#include <thread>
#include <utility>
int main() {
typedef std::unique_ptr<int> intPointer;
intPointer p(new int(10));
std::map<int, std::unique_ptr<int>> m;
m.insert(std::make_pair(5, std::move(p)));
auto start = std::chrono::system_clock::now();
if (std::chrono::system_clock::now() - start < std::chrono::seconds(2))
{
std::thread t;
}
}
la commande même (sans doute que je ne sais pas le bon) de ne fonctionnera pas pour compilateur intel:
icpc test.cpp -std=c++11 -Wl,-rpath,/share/apps/intel/2016.1.056/vtune_amplifier_xe_2016.1.1.434111/target/linux64/lib64
L'erreur est:
In file included from /share/apps/gcc/6.3.0/include/c++/6.3.0/map(60),
from test.cpp(2):
/share/apps/gcc/6.3.0/include/c++/6.3.0/bits/stl_tree.h(1437):
error: identifier "_Compare" is undefined
&& is_nothrow_move_assignable<_Compare>::value)
^
In file included from /share/apps/gcc/6.3.0/include/c++/6.3.0/map(60),
from test.cpp(2):
/share/apps/gcc/6.3.0/include/c++/6.3.0/bits/stl_tree.h(1778):
error: identifier "_Compare" is undefined
_GLIBCXX_NOEXCEPT_IF(__is_nothrow_swappable<_Compare>::value)
^
Qu'est-ce que je fais mal, et comment dois-je résoudre ce problème.
Est-il normal que votre compilateur Intel utilise les en-têtes GCC? J'ai le sentiment que ça ne va pas marcher. Peut-être que vous devriez utiliser l'équivalent Intel de même. – tadman
Eh bien, le morceau de code n'est pas écrit par moi. Cela fait partie d'un test pour compiler un plus gros logiciel. Si ce code ne renvoie pas d'erreur, il me laisse compiler. Changer le code n'est donc pas ce que je peux faire. c'est solide et donné. – Eisa
Vous dites cela et pourtant votre compilateur n'est pas d'accord. Chaque fournisseur a sa propre implémentation de la bibliothèque standard et vous ne pouvez pas mélanger arbitrairement les en-têtes avec les compilateurs. – tadman