Re[4]: Специализация метода. Нужно устранить ошибку
От: SVV Беларусь  
Дата: 24.08.22 08:36
Оценка:
Здравствуйте, vopl, Вы писали:
...
V>
...
V>  template<typename H> STest4(Tag<H>) requires std::is_same_v<H, TypeH1> { std::cout << "ctor(TypeH1)" << std::endl; }
V>  template<typename H> STest4(Tag<H>) requires std::is_same_v<H, TypeH2> { std::cout << "ctor(TypeH2)" << std::endl; }
...
V>

чтобы всё заработало конструкторы оформил так:
STest4(Tag<TypeH1>) { cout << "ctor(TypeH1)" << endl; }
STest4(Tag<TypeH2>) { cout << "ctor(TypeH2)" << endl; }

Мне подходит. Спасибо.
Получается, что моя проблемы была в том, что я забыл про фигурные скобки и что нужно опредлить пустую Tag (... Tag{}; а не ... Tag; )
Я понимал, что вызов st5_1 выглядит как определение функции, но думал что, может, есть способ сказать компилятору, что это именно определения объектов. Нет так нет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.