dar*_*une 4 c++ language-lawyer c++17
我知道有一些特殊的规则可以推断出initializer_list,但在发现以下内容之前我认为从来没有.什么时候可以推断或省略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
}
Run Code Online (Sandbox Code Playgroud)
T.C*_*.C. 12
这与演绎无关.语法?:需要所有三个操作数的实际表达式:
conditional-expression:
logical-or-expression
logical-or-expression ? expression : assignment-expression
Run Code Online (Sandbox Code Playgroud)
甲撑-INIT列表不是表达式和根本无法与被使用?:.
| 归档时间: |
|
| 查看次数: |
178 次 |
| 最近记录: |