小编FLA*_*LAG的帖子

如何防止 c++ 函数重载中 std::function 到 bool 转换?

如何防止std::functionC bool++函数重载中的转换?\n例如

\n
class Object final {\n    \npublic:\n    Object(bool boolean) : type_(22)  {}  //#1\n    Object(const std::function<int(int*, int)>  value) : type_(11) {}  //#2\n    \n    int rettype() { return type_; };\n    \nprivate:\n    int type_;\n};\n\n\nint Println(int *args, int nargs) {\n  printf("Println\\n");\n  return 0;\n}\n\nint main() {\n    cout << Object(Println).rettype() << endl; // 22\n    cout << Object(std::function<int(int*, int)>(Println)).rettype() << endl; // 11\n}\n\n
Run Code Online (Sandbox Code Playgroud)\n

我想通过而不是\xef\xbc\x8c来调用#2,但结果是调用了#1Object(Println)Object(std::function<int(int*, int)>(Println))

\n

我应该如何实现这个目标?

\n

c++ overloading c++11

9
推荐指数
2
解决办法
301
查看次数

标签 统计

c++ ×1

c++11 ×1

overloading ×1