Мне нужен шаблон C ++, который, учитывая
тип и объект этого типа, это
может принять решение на основе того,
тип является целым числом или нет, в то время как
возможность доступа к фактическому
объекты.
Вы можете принимать решения на основе типа, являющегося целым числом или нет, проблема в том, что невозможно объявить шаблон с объектом любого типа. Таким образом, вопрос о том, как определить, является ли тип целым числом, является спорным.
Обратите внимание, что во всех ответах ваш оригинальный шаблон был аккуратно изменен на
template < typename T, int >
class C {};
вместо вашего
template< typename T, T >
class C {};
Но, хотя C<int, 5>
является совершенно допустимым объявлением, это не относится к произвольному типу T, в данном случае C<float, 5.>
приведет к ошибке компилятора.
Можете ли вы опубликовать то, что вы пытаетесь достичь в точности?
И для записи, если вторым аргументом шаблона всегда является int
, и вы просто хотите принять его значение, если тип является целочисленным типом, и 0 в противном случае, вы можете просто сделать:
#include <limits>
template< typename T, int N >
class C {
static const int Value = (std::numeric_limits<T>::is_integer) ? N : 0;
};