3
- 你能解釋一下,爲什麼有差異?
- 是什麼意思
PKcE
?
代碼:帶初始化列表的字符串賦值
#include <iostream>
#include <typeinfo>
using namespace std;
int main() {
string s {"IDE"};
std::cout<<typeid(s).name()<<std::endl;
auto S{"IDE"}; // why do not deduced as string?
std::cout<<typeid(S).name()<<std::endl;
auto c = {"IDE"}; // why do not deduced as string?
std::cout<<typeid(c).name()<<std::endl;
auto C {string{"IDE"}}; // why do not deduced as string?
std::cout<<typeid(C).name()<<std::endl;
auto Z = string{"IDE"};
std::cout<<typeid(Z).name()<<std::endl;
}
輸出:
Ss
St16initializer_listIPKcE
St16initializer_listIPKcE
St16initializer_listISsE
Ss
['std :: type_info :: name'](http://en.cppreference.com/w/cpp/types/type_info/name)返回的名稱是編譯器相關的。你不應該把它們用於任何事情。 –
至於你的問題(我認爲)*爲什麼*類型推導的變量不應被推斷爲['std :: initializer_list'](http://en.cppreference.com/w/cpp/utility/initializer_list)?你在初始化中使用'std :: initializer_list'。 –
'C++ filt -t st16initializer_listIPKcE'給出'std :: initializer_list' –
Jarod42