这个自定义的opeartor new的实现为什么没有编译警告?解决办法

这个自定义的opeartor new的实现为什么没有编译警告?
C/C++ code

#include"stdafx.h"
#include<iostream>
using namespace std;
struct my{
    void* operator new(size_t s){
        cout<<s<<endl;
        return ::new my;//这里返回的是一个my指针,但是operator new声明是返回void*
    }
};
int main(void){
    my* pm=new my;//这里返回void*,编译器没有警告类型被强转成了my*
    return 0;
}


为什么以上两个强制转型,编译的时候都没有警告出来?
我用的VC2010.谢谢

------解决方案--------------------
1. my*可以转成void*

::new my 实际分配了内存呢,调用构造函数对成员赋值.

分配内存的时候会用operator new(size_t)函数来分配,该函数是void*


2. 不会
------解决方案--------------------
探讨

1. my*可以转成void*

::new my 实际分配了内存呢,调用构造函数对成员赋值.

分配内存的时候会用operator new(size_t)函数来分配,该函数是void*


2. 不会