intel C++ コンパイラーでoperatorをdefault宣言するとコンパイル時にエラーになる。
下記のようにoperator =
をdefaultで宣言するとintel c++ compilerでコンパイル時にエラーメッセージが出るのですが、gccやclangでは問題なくコンパイルできるので、コンパイル時のオプションが足りていないのでしょうか?
エラーメッセージ
icpc -std=c++17 sample.cpp
ld: /tmp/icpczIU0ix.o:(.rodata._ZTV6Entity[_ZTV6Entity]+0x10): undefined reference to `Entity::operator=(Entity const&)'
ソースコード
#include <iostream>
class Entity {
public:
Entity() = default;
virtual Entity & operator = ( Entity const & )=default;
public:
int index;
};
Entity e1 = Entity();
int main() {
std::cout << e1.index;
return(0);
}
環境
Intel Compiler: icpc (ICC) 19.0.5.281 20190815
OS: Arch linux
追記
インテルのフォーラムの方に報告したところ、バグとしてアクセプトされました。
https://software.intel.com/en-us/forums/intel-c-compiler/topic/837004