我知道有一些特殊规则可以推断初始化列表,但在发现以下内容之前,我认为从来没有这种情况。什么情况下可以推断或省略initializer_list
?
以下示例似乎不合逻辑,几乎感觉像语言缺陷?
#include <initializer_list>
void test() {
bool reverse = true;
const auto ascend = {1,2,3};//OK : seems to deduce to std::initializer_list<const int>
//const auto a_or_d_AUTO = reverse ? {3,2,1} : {1,2,3};//not ok, why ?
const auto i = reverse ? 3 : 1;// also fine
const auto a_or_d = reverse ? std::initializer_list<const int>({3,2,1}) : std::initializer_list<const int>({1,2,3});//also OK
}
const auto ascend = {1,2,3};
虽然{1,2,3}
不是一个表达式也可以正常工作?此外,值得一提的是,它不是一个表达式的唯一原因是委员会决定放弃了它,如果有的话,将来可能有哪些可能性发生改变。谢谢。 - darune