Я пишу класс, где у меня есть шаблонный конструктор и конструктор копирования. Каждый раз, когда я хочу вызвать конструктор копирования с объектом non const, выбирается шаблонный конструктор. Как заставить компилятор выбрать конструктор копирования?Форсировать компилятор, чтобы выбрать конструктор копирования с константой T & как параметр
Вот mcve:
#include <iostream>
struct foo
{
foo()
{
std::cout << "def constructor is invoked\n";
}
foo(const foo& other)
{
std::cout << "copy constructor is invoked\n";
}
template <typename T>
foo(T&& value)
{
std::cout << "templated constructor is invoked\n";
}
};
int main()
{
foo first;
foo second(first);
}
Удаление функции не то, что я хочу.
не должен заливка аргумента в 'сопзИ & Foo' при * вызова * в CTOR сделать он работу? Ctor для const args, так что давайте его. –
@ PeterA.Schneider, я пишу 'std :: variant'. Я не думаю, что людям понравится кастинг. Я хочу, чтобы пользовательская сторона была чистой – Incomputable
. Один из способов избежать всех этих махинаций - предоставить фиктивный первый параметр для конструктора переадресации, поэтому нет возможности путаницы. –