C ++, Наследование шаблонов вложенного класса - PullRequest
1 голос
/ 28 декабря 2010

Попытка получить tensor_ref<A>::result видимым в tenor_view.

template<class A, class Range, class = void>
struct tensor_view
    : detail::tensor_ref<A>,
    const_tensor_view<A, Range, tensor_view<A, Range> >
{
    using detail::tensor_ref<A>::result;

...

template<class A>
struct tensor_ref<A, typename same_rank<A,N>::enable>
    : const_tensor_ref<A>
{
    template<class I>
    struct result {
        typedef typename traits<A>::reference type;
    };

ошибка: нет шаблона класса с именем "result" в "struct tenoror":: tens_view <... </p>

Что дает?

Ответы [ 4 ]

1 голос
/ 28 декабря 2010

Это не работает, и не предназначено , чтобы заставить его работать для любой новой версии C ++.

То есть вы не можете использовать это объявление - используйте вместо него обычный способ tensor_view::template result.

1 голос
/ 28 декабря 2010

Не уверен, как поступить так, как вы пытаетесь, или, если это вообще возможно, но вы должны быть в состоянии получить что-то равнодушное, сделав это:

// using detail::tensor_ref<A>::result;
template < typename I > struct result : detail::tensor_ref<I> {};
0 голосов
/ 28 декабря 2010

Полагаю, вы никогда не указываете, что означает I при попытке создать экземпляр result<I>.

Например:

detail::tensor_ref<A>::result;

Должно быть:

detail::tensor_ref<A>::result< /* Some type */ >;

Тем не менее, похоже, что вы можете избавиться от строки:

template<class I>

Поскольку в предоставленном вами фрагменте I полностью не используется.

0 голосов
/ 28 декабря 2010

Вам нужно добавить префикс к typename, так как это зависимый тип.

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