C++ 删除的模板函数在gcc上工作,但在clang上不工作

C++ 删除的模板函数在gcc上工作,但在clang上不工作,c++,gcc,clang,C++,Gcc,Clang,我在删除模板功能的模板专业化方面遇到问题。下面的代码显示了归结为MWE的问题: #包括 #包括 模板 内联std::string typeToString()=删除; 模板 内联标准::字符串类型字符串() { 返回“浮动”; } int main() { std::cout这看起来是一个bug。如果您使用clang 3.9.1或更高版本编译,它将被编译。下面的例子在clang 3.8.1上和clang 3.8.1上都失败了,但当我们更改为3.9.1时,它们都被编译。也许Apple LLVM 8

我在删除模板功能的模板专业化方面遇到问题。下面的代码显示了归结为MWE的问题:

#包括
#包括
模板
内联std::string typeToString()=删除;
模板
内联标准::字符串类型字符串()
{
返回“浮动”;
}
int main()
{

std::cout这看起来是一个bug。如果您使用clang 3.9.1或更高版本编译,它将被编译。下面的例子在clang 3.8.1上和clang 3.8.1上都失败了,但当我们更改为3.9.1时,它们都被编译。

也许Apple LLVM 8.0.0是针对一个不允许对删除的函数进行专门化的编译器编写的。有更新版本吗你可以用它吗?
clang test.cpp -std=c++1z
test.cpp:8:28: error: inline declaration of 'typeToString<float>' follows non-inline definition
    inline std::string typeToString<float>()
                       ^
test.cpp:8:28: note: previous definition is here
test.cpp:15:18: error: call to deleted function 'typeToString'
std::cout << typeToString<float>() << std::endl;
             ^~~~~~~~~~~~~~~~~~~
test.cpp:8:28: note: candidate function [with T = float] has been explicitly deleted
    inline std::string typeToString<float>()