Использовать список инициализации с параметром boost

Следующий код не будет компилироваться, потому что при последнем вызове 'demo' компилятор не может вывести тип из списка инициализации.

#include <boost/parameter/name.hpp>
#include <boost/parameter/preprocessor.hpp>
#include <iostream>
#include <array>

BOOST_PARAMETER_NAME(arg)

BOOST_PARAMETER_FUNCTION(
    (void),
    demo,
    tag,
    (optional
    (arg, (std::array<int, 3>), (std::array<int,3>{}))
    )
    )
{
    std::cout << arg[1] << std::endl;
}


int main()
{   
    demo();
    demo(_arg=std::array<int,3>({1,2,3}));
    // 28:14: error: no match for 'operator=' 
    // (operand types are 'const boost::parameter::keyword<tag::arg>' 
    // and '<brace-enclosed initializer list>')
    demo(_arg={1,2,3});
}

Есть ли способ объединить списки инициализации с параметром boost, не добавляя явный вызов в конструктор массива?

0 ответов

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