EP>Он плохо оптимизирует в том числе потому что управляемый код труднее оптимизировать. Например замыкания на C++ порождают обычные вызовы, а на C# косвенные.
Тут дело не в управляемом коде, а в противопоставлении "шаблоны vs раздельная компиляция". в плюсах, если хоцца отдельно скопилировать ФВП от кода её использущего — тут же скатываешся к std::function и той же самой косвенности вызовов.