Я хотел бы использовать безупречную переадресацию на шаблонизированную функцию, чтобы гарантировать, что l -значность или r -значность сохранены, но в то же время я бы хотел наложить определенные ограничения на возможные типы параметров.Идеальная пересылка с ограничениями типа
Предположим, например, я просто хочу ограничить T
вызываемому объекту. Следующий подход выглядит правильно мне
template<typename T>
typename std::enable_if<std::is_callable<T>>::value>::type myFun(T&& val)
{
foo(std::forward<T>(val));
}
, но так как я до сих пор еще не вполне комфортно с различными SFINAE нюансы я был бы признателен за чужое мнение.
Будет ли это правильным и идиоматическим способом?
Почему не специализировать шаблон для 'Allowed_Type' и отключить общий шаблон? – wally
Будет ли это лучшим решением? –
(Почти) всегда предпочитают перегрузку, когда вы хотите обрабатывать определенный тип. – AndyG