У меня есть несколько шаблонов, которые проверяют, определен ли какой-либо оператор для определенного типа, и также проверяю тип возвращаемого выражения. Когда я создаю экземпляр этого шаблона с определенными типами, все в порядке, но для некоторых типов я получаю внутреннюю ошибку компилятора в MSVC. В GCC я получаю ошибку «аргумент шаблона недействителен». Вот строка, вызывающая проблемы, когда я создаю проверку после инкремента:Ошибка вложенного шаблона C++
template <typename _Type, typename _ReturnType>
static auto test(_Type&& var, _ReturnType&&)
-> decltype(std::enable_if_t<std::is_same<_ReturnType, decltype((var) OPERATOR)>>(), std::true_type());
С этим кодом что-то не в порядке?
Примечание: ОПЕРАТОР - это макрос, расширенный для оператора, который я хочу проверить. Весь шаблон является частью большего макроса, который я использую, чтобы избежать повторения кода.
Пожалуйста, напишите [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve). –