Я использую библиотеку C++ Units Калума Гранта http://calumgrant.net/units/ для управления значениями. представляющие длины или скорости.
Теперь мне нужна единица измерения, не указанная в этой библиотеке, а именно футы в минуту. Согласно http://calumgrant.net/units/units.html, вы можете создавать новые юниты, такие как это:
typedef units::compose< units::units::m, units::pow<units::units::s, -1> > meters_per_second;
но этот пример не работает. Если я укажу
typedef units::compose< units::units::foot, units::pow<units::units::minute, -1> >
feet_per_minute;
feet_per_minute vertical_speed(12);
Я получаю следующую ошибку компиляции (используя gcc 4.2.1 на Mac)
error: variable 'feet_per_minute vertical_speed' has initializer but incomplete type
и эта ошибка при компиляции с clang 3
error: implicit instantiation of undefined template 'units::compose<units::scale<units::scale<units::scale<units::units::m, 100, 1>, 100, 254>, 1, 12>, units::pow<units::scale<units::units::s, 1, 60>, -1, 1> >'
Чего не хватает?