为什么" void operator delete(void * ptr,std :: size_t size)noexcept;"在gcc 4.9.0中没有定义?

时间:2014-07-02 03:42:02

标签: c++ c++11 gcc clang c++14

根据C ++ 14标准18.2.1.1草案,隐式定义了以下全局函数:

void operator delete(void* ptr, std::size_t size) noexcept;

但是,gcc 4.9.0不能接受以下代码,但可以用clang 3.4编译。

int main()
{
    // error: invalid conversion from 'int' to 'void*'
    ::operator delete(new int, 1); 
}

这是gcc 4.9.0的缺陷吗?

2 个答案:

答案 0 :(得分:3)

  

gcc 4.9.0声称完全支持C ++ 14

gcc 4.9.0没有提出此类声明。您引用的operator delete定义已作为sized deallocation提案的一部分添加,该提案在gcc中为as yet unimplemented

答案 1 :(得分:0)

根据OP a previous revision

工具链是gcc 4.9.0而不是clang 3.4。