Специализировать бесплатную функцию C++ для типа параметра, который является типом члена шаблонного класса?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Специализировать бесплатную функцию C++ для типа параметра, который является типом члена шаблонного класса?

Сообщение Anonymous »

У меня неудачная настройка класса, с которой я застрял, и мне нужно вызвать простую функцию, специализированную для каждого варианта класса.
Ниже приведена упрощенная версия код, показывающий проблему.
https://godbolt.org/z/advGxdnPK

Код: Выделить всё

template 
struct ValueT {};

struct Container1 {
using Value = ValueT;
};

struct Container2 {
using Value = ValueT;
};

template 
struct Container3 {
using Base = T;
struct Value : ValueT {
typename Base::Value asBase() const { return {}; }
};
};

struct Container4 {
using Value = ValueT;
};

void handle(const Container1::Value &v) {}

void handle(const Container2::Value &v) {}

template
void handle(const typename Container3::Value &v) {
return handle(v.asBase());
}

// intentionally omitted
// void handle(const Container4::Value &v) {}

int main()
{
Container1::Value v1;
Container2::Value v2;
Container3::Value v31;
Container3::Value v32;
Container4::Value v4;
// These should compile.
handle(v1);
handle(v2);
handle(v31);
handle(v32);
// This one should fail to compile.
handle(v4);
return 0;
}
Я попробовал несколько подходов, чтобы скомпилировать handle(v31), в то время как handle(v4) все равно не смог скомпилироваться. Вплоть до параметров шаблона шаблона включительно! Но я не могу найти правильный ракурс, чтобы подойти к этому.

Подробнее здесь: https://stackoverflow.com/questions/784 ... f-a-templa
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как определить бесплатную функцию для подкласса шаблонного класса? [дубликат]
    Гость » » в форуме C++
    0 Ответы
    62 Просмотры
    Последнее сообщение Гость
  • Специализация функции члена из шаблонного класса внутри тела класса
    Anonymous » » в форуме C++
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Специализация функции члена из шаблонного класса внутри тела класса
    Anonymous » » в форуме C++
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как захватить члена класса члена класса в лямбда-выражении
    Anonymous » » в форуме C++
    0 Ответы
    90 Просмотры
    Последнее сообщение Anonymous
  • Как захватить члена класса члена класса в лямбда-выражении
    Anonymous » » в форуме C++
    0 Ответы
    117 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»