How does std::enabled_if work when enabling via a parameter

∥☆過路亽.° 提交于 2019-12-02 06:07:02

why in enable_if is only condition without indicating second template parameter ?

Because the default void is just fine.

What type is "type*" then ? void* ? if so, why ?

Yes, ::type will be of type void if std::is_trivially_destructible<T>::value == true, this will result in ::type* -> void*.

Why is it pointer ?

So we can easily give it a default value of 0.


All we're using std::enable_if for is to check for certain attributes (in this case checking if T is trivially destructible), if these result in false then we use it to create ill-formed code and thus eliminate this function from overload resolution.

If std::is_trivially_destructible<T>::value == false then ::type will not exist and thus the code will be ill-formed. In SFINAE this is handy since this overload will then not be considered for resolution.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!