Я хочу использовать (например) переменную System.Drawing.PointF в C ++ (/ clr), используя msclr :: interop :: marshal_as ().Для этого я добавляю специализацию шаблона следующим образом:
using namespace System::Drawing;
namespace msclr {
namespace interop {
template<>
inline mynmsp::Punt marshal_as<mynmsp::Punt, PointF>(PointF const &from) {
PointF cpf(from);
return mynmsp::Punt(cpf.X, cpf.Y);
}
}
}
Я надеялся достичь этого без дополнительного экземпляра PointF cpf (from);Однако ссылка const делает это невозможным, насколько я вижу, и вызов PointF & from не будет принят без const.Явное добавление X () или X.get () не помогает.Я должен добавить о себе, что мой C # ужасен, пытаясь обойтись с минимумом, делать настоящую работу в C ++.Заранее спасибо, Ян
PS: Комментарий Ханса Пассанта объясняет, что обходной путь обходится бесплатно, по крайней мере, в сборке Release.Я считаю это решением, потому что теперь я могу добавить это в качестве комментария, и я, безусловно, сохраню базовых оптимизаций джиттера .Спасибо.