Объявление параметра шаблона теней 'X'? - PullRequest
0 голосов
/ 23 апреля 2020

Я пытался восстановить какой-то старый код моего руководителя и столкнулся с этой ошибкой. Я исследовал это через. подобные вопросы на этом сайте, но поскольку программа большая, я не хочу вносить какие-либо изменения, пока не буду уверен, что знаю проблему и как ее исправить. Я запускаю этот скрипт .t cc в терминале моей ма c через. g cc.

template <>
struct Operation<OpMax>
{
    template <typename X>
    static const X &
    eval(const X &x, const X &y)
    {
        return std::max(x,y);
    }

    template <typename X, typename Y>
    static typename Promotion<X, Y>::Type
    eval(const X &x, const Y &y)
    {
        typedef typename Promotion<X, Y>::Type T;
        const T &X = x;
        const T &Y = y;
        return std::max(X,Y);
    }
};

Я понимаю, что из "объявления X теней, уже объявленного параметром шаблона" будет указана переменная X, которая "определена" дважды, оба в объявлении функции "eval" а затем снова в теле функции в качестве ссылки & X et c. Эта ошибка происходит как для X, так и для Y. Это правильно? И будет ли проблема решена путем присвоения параметру или переменной другого имени?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...