Swarm: Use std::is_convertable for type resolution