次のコードは違法です。
#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'));
コードが機能するようにします。
* と記された行が許可されていないのはなぜですか? その論理的根拠の背後にある理由は何ですか?