Как сделать закрытый исходный код для библиотеки, написанной с помощью шаблона на C ++ - PullRequest
3 голосов
/ 06 марта 2011

После прочтения этой статьи Сохранение определений функций шаблона C ++ в файле .CPP , я знаю, что определение класса, использующего шаблон, должно быть каким-то образом записано в заголовочном файле. Таким образом, пользователь клиента может использовать его, импортируя файлы заголовков. Не означает ли это, что подробности реализации раскрываются пользователю? Означает ли это также, что библиотека, написанная с шаблоном, должна быть предоставлена ​​с открытым исходным кодом?

Спасибо, что помогли прояснить это.

Ответы [ 3 ]

7 голосов
/ 06 марта 2011
  1. Подробности реализации шаблона будут видны. Однако вы можете предоставить явные экземпляры шаблона, если знаете, какие параметры будут необходимы. Но чтобы быть универсальным решением, вы должны предоставить реализацию, чтобы его можно было использовать с другими параметрами.

  2. Нет, вам не нужно выпускать его как открытый исходный код. Тот факт, что кто-то может видеть код, не означает, что он должен быть с открытым исходным кодом. Вы можете лицензировать его практически так, как вы хотите, и покупатель должен соблюдать эти правила. В конце концов, только потому, что мы можем видеть весь текст романа, не означает, что мы можем делать с ним все, что захотим.

4 голосов
/ 06 марта 2011

Да, библиотеки C ++ на основе шаблонов предоставляют свои реализации. Предоставление источника - это не то же самое, что «открытый исходный код». Microsoft поставляет источник в MFC, но это не открытый источник. Лицензия имеет значение.

2 голосов
/ 06 марта 2011

Это означает, что библиотеки на основе шаблонов обычно имеют исходный код, да.Это не особенно похоже на то, как обычно используется «открытый исходный код».Опять же, большинство хороших библиотек в любом случае предоставляют исходный код.

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