Определение функции в C++ во время компиляции

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

Я конкретно хочу применить функцию, которая будет выводить размер объекта (т.е. количество объектов в коллекции), если у объекта есть эта функция, но будет выводить простую замену (например, "N/A"), если у объекта нет. Т.е.

NO_OF_ELEMENTS( mySTLMap ) -----> [ calls mySTLMap.size() to give ] ------>  10
NO_OF_ELEMENTS( myNoSizeObj ) --> [ applies compile time logic to give ] -> "N/A"

я ожидаю, что это может быть что-то похожее на статическое утверждение, хотя я бы явно хотел скомпилировать другой путь кода, а не потерпеть неудачу на этапе сборки.

6
задан Component 10 18 January 2012 в 14:34
поделиться