感觉是VS 又坑了我. 为什么会出错?

iamnobody 2014-03-12 07:46:05



struct Y
{
bool y();

bool x;
};

template<int i>
struct TestHelper{};

int main()
{
enum {yiis = sizeof(&Y::y)}; // ok
TestHelper<sizeof(&Y::y)> y; // error C2070: “overloaded-function”: 非法的 sizeof 操作数
TestHelper<sizeof(&Y::x)> x; // ok
system("pause");
return 0;
}

...全文
198 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
FancyMouse 2014-03-13
  • 打赏
  • 举报
回复
哦不对我好像把你的代码看错了……取函数指针的话那可能就是vs bug了。
FancyMouse 2014-03-13
  • 打赏
  • 举报
回复
http://stackoverflow.com/questions/2666392/what-does-sizeof-function-name-return HIH。lz似乎错怪vs了。帖子里有标准文字,有gcc为什么能过编译的理由,etc。
iamnobody 2014-03-13
  • 打赏
  • 举报
回复
引用 2 楼 taodm 的回复:
嗯?如果y没有误作Y的话,那就换个实现方式呗。
没有呀,你能不能用你的编译器帮我编译一下,看有没有错.
mujiok2003 2014-03-13
  • 打赏
  • 举报
回复
TestHelper<sizeof(decltype(&Y::y))> y;
iamnobody 2014-03-13
  • 打赏
  • 举报
回复
引用 5 楼 FancyMouse 的回复:
哦不对我好像把你的代码看错了……取函数指针的话那可能就是vs bug了。
奇怪的是它在将它给enum 初始化 就没有 问题, 作为 模板参数就出问题了.
taodm 2014-03-12
  • 打赏
  • 举报
回复
嗯?如果y没有误作Y的话,那就换个实现方式呗。
霜夜丶 2014-03-12
  • 打赏
  • 举报
回复
bool y(); y 是个函数啊 怎么用 不能用sizeof吧

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧