Действительно ли возможно исказить ответвление в Мерзавце?

Я не уверен, для чего предназначена структура identity, но удаление ее дает более четкое сообщение об ошибке (сбой вывода шаблона).

Компилятор не может получить тип std::function из лямбды. Чтобы доказать это, компилируется следующее:

storage.get(2, std::function([](comp_a& a, comp_c& c) {              // Doesn't work
    std::cout << a.val << " " << c.val << std::endl;
}));

Итак, чтобы заставить его работать, нам просто нужно помочь компилятору в получении типов. Заимствуя у http://www.cplusplus.com/forum/general/223816/ следующие работы:

namespace detail
{
    template < typename T > struct deduce_type;

    template < typename RETURN_TYPE, typename CLASS_TYPE, typename... ARGS >
    struct deduce_type< RETURN_TYPE(CLASS_TYPE::*)(ARGS...) const >
    {
        using type = std::function< RETURN_TYPE(ARGS...) >;
    };
}

template
struct storage
{
    template
    void get(size_t index, typename std::function f)
    {
        f(std::get(components)[index] ...);
    }

    template
    void get(size_t index, Lambda l)
    {
        get( index, typename detail::deduce_type< decltype( &Lambda::operator() ) >::type( l ) );
    }

    std::tuple ...> components;
};

59
задан sjas 10 February 2013 в 11:41
поделиться

2 ответа

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

git symbolic-ref refs/heads/trunk refs/heads/master

Примечание, что соединительная линия не является гражданином первого класса. Если Вы, которых контроль trunk и выполняет git status, Вы на самом деле будете на master, однако можно использовать эти trunk команда во всех местах, что Вы используете имя ответвления (журнал, слияние, и т.д.).

81
ответ дан CB Bailey 24 November 2019 в 18:25
поделиться

Нет ничего специального об имени "ведущего устройства" в Мерзавце, это просто называют этим условно (и по умолчанию). Можно, конечно, назвать это "соединительной линией", если Вам нравится:

git branch -m master trunk

Это очень похоже на Подверсию, где имя "соединительная линия" только называют этим условно также. Вы, возможно, назвали основное ответвление "ведущим устройством" в Подверсии.

10
ответ дан Greg Hewgill 24 November 2019 в 18:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: