template <typename TAG>
fn(int left, TAG, int right)
{
}
fn(0, some_type_tag(), 1);
/* or */
fn(0,int(), 1); // where the primitive, int, is not empty.
РЕДАКТИРОВАТЬ: Есть две точки зрения на этот вопрос.
- Объявление функции против определения. В объявлении параметр может не указываться, но в объявлении может быть указано. Это не интересная перспектива.
- Перспектива шаблона, особенно в метапрограммировании. Рассматриваемый параметр - это тег, используемый для извлечения мета-структуры из признака. Вот почему параметр не имеет имени, меня интересует только информация времени компиляции - тип тега.
/ EDIT
Мои теги обычно являются пустыми структурами, однако в некоторых частях моего кода они являются typedefs примитивных типов, поэтому мне интересно узнать, действительно ли современные компиляторы передают параметр. Это имеет два аспекта.
- Определение размера стека, с учетом размера безымянного типа параметра.
- Фактическое построение стека с переданным значением.
Оставим его в gcc 4.5 и msvc 2008+
задан camh 20 May 2011 в 14:06
поделиться