#include <initializer_list>
using namespace std;
template<class T>
void f(initializer_list<T>)
{}
int main()
{
typeid(1); // OK
typeid(int); // OK
typeid(decltype(1)); // OK
f({1, 2}); // OK
typeid({1, 2}); // error
decltype({1, 2}) v; // error
typeid(decltype({1, 2})); // error
}
{1, 2} 是一个值吗?
如果是,为什么是 typeid({1, 2}); 不合法?
如果不是,为什么可以将其分配给 initializer_list 对象?