C++: BOOST_FUSION_ADAPT_STRUCT Ошибка при использовании fusion::at
В документации Boost.Fusion говорится, что BOOST_FUSION_ADAPT_STRUCT делает struct полностью совместимой последовательностью произвольного доступа Boost.Fusion.
Я попробовал следующее:
#include <iostream>
#include <boost/fusion/include/adapt_struct.hpp>
#include <boost/fusion/include/at.hpp>
struct Str {
int i;
float j;
};
BOOST_FUSION_ADAPT_STRUCT(
Str,
(int, i)
(float, j)
)
int main() {
Str s;
boost::fusion::at<0>(s) = 1;
}
И я получил сообщение об ошибке от компилятора: "Нет подходящей функции для вызова at(Str&)".
Я использую компилятор g++.
Что я делаю неправильно?
Заранее спасибо.
1 ответ
Решение
boost::fusion::at<boost::mpl::int_<0>>(s) = 1;
Потому что N должно быть интегральной константой MPL