Рассмотрим следующий код:
template <typename T>
class Object
{
public:
using p1 = unique_ptr<Object>;
using p2 = unique_ptr<Object<T>>;
// ...
};
Подскажите, пожалуйста, есть ли разница между p1
и p2
?
Да никакого. Это просто разная запись одного и того же.
Можете убедиться:
void out()
{
cout << typeid(p1).name() << endl;
cout << typeid(p2).name() << endl;
}
дает один и тот же тип.
Ну, или используйте is_same
.
Шаблон класса позволяет задать тип для объектов, используемых в классе, это не влияет на имя класса. Поэтому для шаблоннного класса:
template <class T>
class Object {
T a;
public:
Object<T>(const T k) : a(k) {}
Object(const T k) : a(k) {}
};
Имя Object
и Object<T>
идентичны в пределах этой же специализации, и тут присутствует двойное определение одного и того же конструктора
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В ходе работы встала задача выделить соседствующие пиксели по цвету, однако я никак не додумаюсь, как это сделатьЕсли как в одной строке вполне...