можно для начала вопрос: зачем темплейтом делать!? почему не явными параметрами эти строку и файл? вроде компилятор должен нагенерить кучу реализаций или я что-то не так понимаю...
возможно примерно так (не проверял):
Здравствуйте, konst, Вы писали:
K>можно для начала вопрос: зачем темплейтом делать!? почему не явными параметрами эти строку и файл? вроде компилятор должен нагенерить кучу реализаций или я что-то не так понимаю... K>возможно примерно так (не проверял): K>
Здравствуйте, Magister, Вы писали:
ПК>>Строковый литерал не может являться аргументом шаблона, т.к. аргументы ПК>>шаблона должны иметь внешнее связывание.
M>а что есть внешнее связывание?
Здравствуйте, Magister, Вы писали:
M>Привет,
M>возникла проблемка, M>следующий код :
M>[ccode] M>template<const char* __file, int __line> M>void ___my_trace(const char* p_Format, ...) M>{ M> ... M>}
>не компилируется при вызове
Цитата из "Шаблоны C++: справочник разработчика" стр. 62:
На параметры шаблонов, не являющиеся типами, накладываются некоторые ограничения. В общем случае такими параметрами могут быть только целочисленные константы (включая перечисления) или указатели на объекты с внешним связыванием.
...Поскольку строковые литералы — это объекты с внутренним связыванием (два строковых литерала, которые имеют одинаковые значения, но находятся в разных модулях, являются разными объектами), их использование в качестве аргументов шаблона не допускается.