void_value.h

```cpp

#ifndef ASYNCIO_VOID_VALUE_H
#define ASYNCIO_VOID_VALUE_H

namespace ASYNCIO_NS {
struct VoidValue { };

namespace detail {
template<typename T>
struct GetTypeIfVoid: std::type_identity<T> {};
template<>
struct GetTypeIfVoid<void>: std::type_identity<VoidValue> {};
}

/*
GetTypeIfVoid_t的主要作用识别T是否为void
当void时GetTypeIfVoid_t为VoidValue类型,否则为T本身
*/
template<typename T>
using GetTypeIfVoid_t = typename detail::GetTypeIfVoid<T>::type;

}
#endif // ASYNCIO_VOID_VALUE_H

```

posted @ 2024-07-12 17:03  DavidJIAN  阅读(1)  评论(0)    收藏  举报