实例化后成员的显式专业化-仅在Xcode中

时间:2019-02-11 03:55:56

标签: c++ xcode

我有一个正在编译的软件,该软件在带有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>()

请帮助

0 个答案:

没有答案