C ++ Пустые угловые скобки в функции, возвращающей класс Template - PullRequest
2 голосов
/ 20 апреля 2020

В фрагменте кода libtorch (C ++ PyTorch) здесь , я увидел странный фрагмент синтаксиса C ++, который я никогда раньше не видел:

Example<> get(size_t index);

Это определяет функцию get что именно возвращает? Что такое Example<>?

Означает ли это, что он может возвращать Example<T> для любого типа T, и это похоже на auto?

Кроме того, для дальнейшего использования, Есть ли имя для таких классов, как Example<int> (что-то вроде шаблонных классов?), чтобы отличить их от других классов, которые не были созданы с помощью шаблонов?

1 Ответ

4 голосов
/ 20 апреля 2020

Если вы проверите объявление Example,

template<typename Data = Tensor, typename Target = Tensor>
STRUCT Example

Вы обнаружите, что оно имеет два параметра шаблона с аргументами шаблона по умолчанию , тогда Example<> ссылается на создание экземпляра в качестве заданных аргументов шаблона по умолчанию, то есть так же, как Example<Tensor, Tensor>.

...