我试图将静态断言放在静态const unordered_map成员的大小上。但我得到一个错误,说静态断言的非常量条件。有人可以帮忙吗?
#include<unordered_map>
#include<string>
using namespace std;
class A{
public:
static const unordered_map<string,string> strMap;
};
const unordered_map<string,string> A::strMap ={{"key","value"}};
int main() {
static_assert(A::strMap.size() == 1, "sizes don't match");
}
编辑:根据评论,我想澄清,以下代码工作正常(它使用数组而不是地图):
#include<unordered_map>
#include<string>
using namespace std;
class A{
public:
static const pair<string,string> strMap[];
};
const pair<string,string> A::strMap[] ={{"key","value"}};
int main() {
//static_assert(sizeof(A::strMap)/sizeof(A::strMap[0]) == 2, "sizes don't match"); Fails to compile
static_assert(sizeof(A::strMap)/sizeof(A::strMap[0]) == 1, "sizes don't match"); //Compiles fine
}
答案 0 :(得分:3)
不能这样做。你需要query?.whereKey("location", nearGeoPoint: geoPoint!, withinKilometers: Double(distanceSearch!)!)
std :: unordered_map,这是不可能的,因为它的构造函数不是constexpr。当然,没有任何分配内存的类(constexpr
属于这种类型)可以声明它的构造函数constexpr。