以下代码是非法的:
#include <vector>
#include <utility>
int main() {
std::vector<std::pair<int, char> > v;
v.push_back(v.value_type(0, 'a')); // *
}
我必须将 * 更改为
v.push_back(decltype(v)::value_type(0, 'a'));
让代码工作。
为什么标有 * 的行不允许?这个理由背后的原因是什么?