C ++ черты для параметров не шаблонных функций? - PullRequest
0 голосов
/ 28 февраля 2012

При определении шаблона функции экземпляры параметров шаблона в общем случае неизвестны. Черты типа могут использоваться для получения некоторой информации во время компиляции. Например, вот тривиальное приложение is_pointer:

template <typename T>
void foo(T p) { cout << is_pointer<T>::value << endl; }

У меня такой вопрос: была ли когда-нибудь в функции не-шаблон ситуация, когда черты, подобные функциям времени компиляции, могли бы предоставить полезную информацию?

Ответы [ 2 ]

4 голосов
/ 28 февраля 2012

Да:

#include <iostream>
#include <limits>

int main()
{
    std::cout << "Max value of an int on your platform is "
              << std::numeric_limits<int>::max() << "\n";
}

Это первый пример, который пришёл в голову.Я уверен, что есть много других.В более общем смысле, он позволяет выполнять поиск по типу во время компиляцииОчевидно, что в ситуации, не связанной с шаблоном, того же можно достичь с помощью определений макросов (INT_MAX и т. Д.).

0 голосов
/ 28 февраля 2012

Если не проверять информацию времени компиляции об базовом типе, например, о максимальных и минимальных значениях для целочисленных типов и т.или для получения лучшей ошибки, когда используется неправильный тип.

...