std::make_pair
takes a "universal reference" to its arguments. A universal reference can bind to pretty much anything. This is the actual signature:
template< class T1, class T2 > constexpr std::pair<V1,V2> make_pair( T1&& t, T2&& u ); // ^^^^^^^^^^^^^^
When you explicitly supply the type (unnecessarily I might add), it turns the function call into this:
... ( int&& t, bool&& u );
Meaning the arguments are no longer universal references but rvalue-references. Rvalue-references can only bind to rvalues, not lvalues, hence the error for the first argument.
The solution to this issue is to allow template argument deduction to do its job:
map_.insert(std::make_pair(x, true));