As you said there is no problem when these types are the same (string::size_type being a typedef to size_t). And in case they do differ, the compiler would give a warning assuming the conversion is potentially dangerous (int x = s.size())?<div>

<br></div><div>So I guess everything already works as expected? I just can't see the benefit of your proposal. I personally hate seeing code like string::size_type and map::value_type, even though it's more correct it just seems like more verbosity in the most verbose language ever :)</div>