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

Повысьте:: фьюжн:: на

Другие вопросы по тегам