#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
类型。
clang++ -std=c++11 ../item2.cpp
或-std=gnu++11
有人可以解释这个问题吗?