У меня есть следующая структура для определения того, может ли тип передаваться по значению:
template <class T>
struct should_be_passed_by_value {
static constexpr bool value =
std::is_scalar<T>::value ||
std::is_array<T>::value ||
std::is_reference<T>::value ||
(sizeof(T) <= sizeof(void*));
};
Проблема заключается в следующем: когда я создаю экземпляр для указателя на функцию C или std:: function, компилятор говорит:
invalid application of 'sizeof' to a function type
(конечно).
Как его можно изменить так, чтобы value
содержал false
?