发现一个用 ()
初始化和用 {}
初始化的问题。
问题如下:
#include <set>
using namespace std;
class A{
public:
static bool compare(int a, int b) { return a<b; }
// 为什么这里必须使用 {compare} 而不能使用 (compare)
// 使用 (compare) 则编译错误
multiset<int,decltype(compare)*> s{compare};
};
int main()
{
return 0;
}
但是下面的可以:
#include <set>
using namespace std;
bool compare(int a, int b) { return a<b; }
int main()
{
// 这里定义时使用了 (compare) ,编译通过
multiset<int,decltype(compare)*> s(compare);
return 0;
}
类成员 的 "member-declarator" 只能使用 "brace-or-equal-initializer", 不能用
()
形式。