Шаблон кандидата игнорируется: не смог вывести аргумент шаблонаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Шаблон кандидата игнорируется: не смог вывести аргумент шаблона

Сообщение Anonymous »

Во-первых: сообщение об ошибке действительно соответствует указанному. После слова «аргумент» стоят просто кавычки, что само по себе странно. Но вот проблема, которую я пытаюсь решить. Я пишу класс, который хранит внутри себя ссылку на тип (шаблон), а также должен принимать конвертируемые типы:

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

template
class Ref {
public:
Ref();
Ref(std::nullptr_t);
explicit Ref(T *value);

Ref(Ref const& value);

template
Ref(Ref const& value);

template
Ref(Ref &&value);
private:
T *_value;
};
Теперь у меня 2 класса А и Б:

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

class A {
};

class B : public A {
};
и я пытаюсь присвоить экземпляр Ref для B переменной Ref для класса A:

Ref t;
Ref t2(t);
< /code>

Это должно на самом деле компилировать, но я получаю упомянутую ошибку (Clang) для последних 2 конструкторов (те, кто принимает конвертируемый тип), которая должна на самом деле подняться для этого назначения Полем Что нужно сделать, чтобы сделать вычет аргумента шаблона здесь?

Подробнее здесь: https://stackoverflow.com/questions/399 ... e-argument
Ответить

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

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

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

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

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