c – 在switch中使用constexp成员函数

老栗子 2019-09-12 01:29:17
为什么我可以在switch中使用constexp非成员函数,但是当我使用成员函数时,编译器会说:“’y’的值在常量表达式中不可用”? class Test { public: constexpr Test(int i) : i(i) { } constexpr int get() {return i;}; private: int i; }; constexpr int test() { return 1; } int main() { int x = 0; Test y = Test(4); switch (x) { case test(): // this is OK break; case y.get(): // not working break; } }
...全文
32 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38087237 2019-09-12
  • 打赏
  • 举报
回复
将y声明为常量表达式: constexpr Test y = Test(4); Demo 原因: 虽然,Test :: get()被声明为constexpr对象y不是.

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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