[trick] SFINAE with decltype
От: flаt  
Дата: 18.08.14 12:01
Оценка: 149 (8)
Несколько раз натыкался на интересную возможность decltype(..., true) и, в конце концов, решил поискать больше информации.

SO:
// Culled by SFINAE if reserve does not exist or is not accessible
template <typename T>
constexpr auto has_reserve_method(T& t) -> decltype(t.reserve(0), bool()) {
  return true;
}

// Used as fallback when SFINAE culls the template method
constexpr bool has_reserve_method(...) { return false; }


Note: thanks to the semantics of , (the comma operator) you can chain multiple expressions in decltype and only the last actually decides the type. Handy to check multiple operations.


Также нашёл, что и в классических реализациях с sizeof можно делать так же: http://rsdn.ru/forum/cpp/2759773.1
Автор: Quasi
Дата: 08.12.07
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.