我有一个正在编译的软件,该软件在带有VS2015的Windows 10和带有g ++ 5.4的Ubuntu 16.04上均可正常运行。但是在最新版本的Xcode上却没有。
我有一个带有以下内容的标头类:
template<typename Dtype>
string device_type_name() const;
virtual string device_type_name_void() const = 0;
virtual string device_type_name_bool() const = 0;
我有这样的实现:
template<>
string DeviceProgram::device_type_name<void>() const {
return device_type_name_void();
}
template<>
string DeviceProgram::device_type_name<bool>() const {
return device_type_name_bool();
}
不幸的是,仅在osx上出现错误:
device_program.cpp:410: error: explicit specialization of 'device_type_name<bool>' after instantiation
我尝试删除string device_type_name() const;
等实例化行,但是如果这样做,则会出现错误:
device_program.cpp:409: error: extraneous 'template<>' in declaration of variable 'device_type_name'
device_program.cpp:410: error: redefinition of 'device_type_name'
此外,我无法执行以下操作:
this->device_type_name<Dtype>()
请帮助