Имея эту функцию:Выведите тип члена аргументов шаблона объекта
template <typename T>
T operator-(const T vector)
{}
Я хочу, чтобы обеспечить соблюдение, что T имеет x
и y
членов, и что они являются арифметическими. Я пытался сделать это с помощью std::declval<T>
:
template <typename T,
typename = typename
std::enable_if<std::is_arithmetic<std::declval<T>.x>::value>::type,
typename = typename
std::enable_if<std::is_arithmetic<std::declval<T>.y>::value>::type>
T operator-(const T vector)
{}
Но все, что я получаю, что тип не может быть выведено: error: insufficient contextual information to determine type
. Можно ли вывести тип элемента объекта параметра шаблона?
Синтаксис 'std :: declval .x' может использоваться только с объектом, а не с типом. –
@RSahu: Правильно. Я этого не заметил. Благодарю. Возможно ли каким-либо образом узнать тип элемента переданного объекта во время компиляции? – sjaustirni
Я пытался использовать 'std :: is_arithmetic :: value', он компилируется, но, похоже, он не работает. –
sjaustirni