шаблонные методы с ++ - PullRequest
2 голосов
/ 27 мая 2011

Как шаблонные методы реализованы в C ++?

Я думаю о реализации шаблонов в JVM и продумал возможную реализацию для шаблонных классов, но не уверен в методах.

Если, например, вы сделали:

class Test
{
    public static boolean isIterable<T>(T variable)
    {
        return T instanceof Iterable;
    }
}

System.out.println(Test.isIterable(new int[] { 0 }));

Буду ли я создавать версию Test с ответом на int[]?(В моей реализации класс был бы назван так: $g$Test$A_Java_lang_int)

Пожалуйста, игнорируйте любые проблемы с обобщениями (например, требующие только объекты в штучной упаковке), так как я собираюсь их удалить.* Я планирую создавать эти разрешенные шаблоны динамически и отслеживать количество ссылок, чтобы я мог удалить их, если они не используются.Я верю, что именно так .Net управляет этим, хотя я был бы рад ошибаться здесь!

Ответы [ 2 ]

1 голос
/ 27 мая 2011

Могу ли я создать версию теста, которая отвечает на int[]?

По сути, да.Шаблоны в C ++ - это просто механизм времени компиляции, который использует (прославленный) механизм макросов для генерации кода на основе шаблона для каждого типа, для которого он создан.намного больше из-за возможности специализации, но это суть.)

1 голос
/ 27 мая 2011

Я бы предложил сделать это статически, генерируя классы. Вам может показаться интересным http://trove.starlight -systems.com / , поскольку он использует шаблонный подход к созданию своих примитивных коллекций. например TintLongHashMap Это не зависит от каких-либо языковых возможностей.

Я бы посоветовал вам разобраться, как сделать это статически, прежде чем пытаться делать это динамически, что намного сложнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...