我可以使用初始化列表来初始化 spring.profiles.active=native
spring.cloud.config.server.native.searchlocations =classpath:config/{application}
,如下所示:
std::map
我可以通过提供比较lambda来更改std::map<int, int> m {{5, 6}, {3, 4}, {1, 2}};
的顺序(请参见here,搜索“ lambda”),如下所示:
std::map
现在,我尝试同时执行以下两项操作:
auto comp = [](int a, int b) { return b < a; };
std::map<int, int, decltype(comp)> m(comp);
但是,这不能编译。在VS 2013上,出现以下错误:
错误C2448:'m':函数样式的初始化程序似乎是函数定义
I also tried running the code on Ideone,但出现以下错误:
错误:在输入末尾出现预期的“}”
在我看来,这most vexing parse有点像。我尝试提供assignment operator或使用std::make_pair
within the initializer list,但无济于事。
如何在此处使用初始化列表?可能吗?
答案 0 :(得分:1)
带初始化列表和比较器的Ctor是:
map( std::initializer_list<value_type> init,
const Compare& comp = Compare(),
const Allocator& alloc = Allocator() );
所以你应该写
auto comp = [](int a, int b) { return b < a; };
std::map<int, int, decltype(comp)> m{{{5, 6}, {3, 4}, {1, 2}},comp};