c ++ 11推导出统一的initializer_list

时间:2017-12-26 11:23:52

标签: c++ c++11 auto type-deduction

#include <iostream>    
#include <boost/type_index.hpp>
using boost::typeindex::type_id_with_cvr;
#define print_type(var) do { \
  std::cout << type_id_with_cvr<decltype(var)>().pretty_name() \
            << std::endl; \
} while(0)

int main() {   
  auto il1 = { 1 };
  auto il2{ 1 };
  print_type(il1);
  print_type(il2);
  return 0;
}

输出

$ ./item2 
std::initializer_list<int>
int

我希望每个输出都是initializer_list。 但第二个推断为刚刚int类型。

  • 使用g ++ 5.4,clang 3.8,clang 4.0进行测试。
  • 使用clang++ -std=c++11 ../item2.cpp-std=gnu++11
  • 构建

有人可以解释这个问题吗?

0 个答案:

没有答案