4ece20e36abd036e4911ba97414c21808fa2eef7
[libcds.git] / cds / details / make_const_type.h
1 //$$CDS-header$$
2
3 #ifndef __CDS_DETAILS_MAKE_CONST_TYPE_H
4 #define __CDS_DETAILS_MAKE_CONST_TYPE_H
5
6 #include <cds/details/defs.h>
7
8 namespace cds { namespace details {
9
10     //@cond
11     template <typename T, bool B>
12     struct make_const_type
13     {
14         typedef T      type;
15         typedef T *    pointer;
16         typedef T &    reference;
17     };
18     template<typename T>
19     struct make_const_type<T, true>
20     {
21         typedef T const      type;
22         typedef T const *    pointer;
23         typedef T const &    reference;
24     };
25
26     //@endcond
27
28 }}  // namespace cds::details
29
30 #endif  // #ifndef __CDS_DETAILS_MAKE_CONST_TYPE_H