Черты C ++ для параметров функции не шаблонов?

StackOverflow https://stackoverflow.com/questions/9472694

  •  13-11-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

Да:

#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 и т. Д.).

Другие советы

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

Реальная выгода для типовых черт состоит в том, чтобы помочь шаблону Meta Programming, либо путем добавления потока управления с Sfinae или для получения лучшей ошибки, когда используется неверный тип.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top