2012-02-14 2 views
1

Я оцениваю привязку моего проекта на C++ в .NET, привлеченного возможностью F #. Мой проект использует шаблоны в широком масштабе, так что это не редкость, чтобы иметь что-то вроде этого:. NET: Современные связки C++?

template <typename T, class Iterator = BufferIterator<T> > 
class Buffer 
{ 

public: 
    [...] 
private: 
    [...] 
}; 

Мой вопрос: как тугой является интеграция с C++ в .NET? Возможно ли связать мой проект с полной поддержкой шаблонов C++ и других возможностей C++ TMP? Ссылки на материал и пару примеров будут очень оценены.

Спасибо заранее, А.

ответ

1

C++ шаблоны могут использоваться на обоих родных и управляемых типов в рамках проекта ++/CLI C.

Имитация шаблонных типов C++/CLI может использоваться извне проекта (сборка), но они действуют как полностью независимые и несвязанные типы. Совместное использование шаблонов типов C++/CLI между проектами C++/CLI вызывает проблемы с идентификацией типа, вы должны делиться только конкретными типами.

Другие языки имеют нулевую поддержку метапрограммирования.

Нет никакой связи между шаблонами и .NET-генераторами, первая - функция времени компиляции, а вторая - среда выполнения. Два несовместимых метода приближающегося полиморфизма (что не означает, что вы не можете использовать оба одновременно, но оба они не взаимодействуют друг с другом)

+0

Не могли бы вы пояснить, что вы имеете в виду под «Другие языки? нулевая поддержка метапрограммирования. "? Я очень новичок в среде .NET, поэтому я только слышал о проекте C++/CLI, но я не знаю точного значения :) Спасибо, А. –

+0

Короче говоря, на других языках можно увидеть 'std :: vector ', но не' шаблон std :: vector'. Как только шаблон был создан, это всего лишь тип (со странным именем), и к нему можно получить доступ с других языков. До тех пор, пока он не был создан, это C++ - только – jalf

+0

@AlfredoDiNapoli: Другие языки не эквивалентны параметрам шаблона непигового типа, которые являются основой TMP. –

Смежные вопросы