Boost :: unit показывает тип модуля в отладчике и intelllisense (VS2010) - PullRequest
0 голосов
/ 13 сентября 2018

Я экспериментировал с использованием библиотеки бустеров в качестве части системы, которую я разрабатываю. Я получил работающую систему единиц и могу заставить ее конвертировать и вычислять нужные мне значения. Проблема, с которой я сталкиваюсь, заключается в том, что при просмотре источника в Visual Studio я не нашел способа определить, какую именно единицу измерения представляет переменная, не переходя к определению или при использовании отладчика.

Например, если у меня есть какое-то значение:

int someInteger = 10;
double someDouble = 10;

затем позже:

auto result = someInteger * someDouble;

Я могу навести курсор на result, someInteger и someDouble и увидеть их типы в intellisense. Я знаю, что someInteger - это int, а someDouble - это double, и если я использую отладчик, я также могу видеть текущее значение на шаге счетчика программы.

Однако, с типами единиц усиления, такими как:

quantity<si::electric_potential> someVoltage = 1 * si::volts;
auto someCurrent = 1 * si::amperes;
auto calculated = someVoltage / someCurrent;

Когда я нахожу над некоторым напряжением или некоторым током в intelisense, я вижу только:

"boost::units::quantity<...>" 

для типа.

При использовании отладчика я вижу его текущее значение в том, что у него есть какой-то тип, и в нем перечислено много типов буста, но нет способа увидеть устройство. Однако, когда переменная печатается, например, так:

std::cout << calculated << std::endl;

печатает:

1 (ohm) 

, так что буст-модули знают модуль, поэтому компилятор должен сказать мне, что это за тип. Я просто не могу понять, как заставить это работать. Я использую VS2010 и, к сожалению, не имею других вариантов для этого проекта.

EDIT:

Я только что заметил очень странное поведение. Если я включаю функцию в программу:

void checkVoltage(boost::units::quantity<electric_potential> someVoltage);
void checkVoltage(boost::units::quantity<electric_potential> someVoltage){
//do something:
}

Затем типы отображаются для всех напряжений в intellisense.

Любая помощь будет принята с благодарностью.

...