【发布时间】:2014-07-02 03:42:01
【问题描述】:
根据草案 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 的缺陷吗?
【问题讨论】:
-
您指定
-std=c++1y了吗? -
是的,我用 -std=c++1y 指定了编译器选项。
-
我的环境是MinGW64。
-
顺便说一句,我查看了open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3536.html,这表明
size_t是要删除的区域的大小。new int似乎不太可能产生 1 字节分配。 -
"C++14" 只是暂时不存在的东西的名称。没有什么可以完全支持的。