:: 튜플을 수 std 포인터와 const를 추가를 C++11
템플릿의 마법을 사용하여 다음내가 달성하기 위해 노력하고있어 <Types...>
한다고 가정 나는이 같은 유형이 있습니다
using my_types = std::tuple<char, int, float>;
이 데, 나는 모두 const
이 아닌 값으로 포인터의 튜플을 좀하고 싶습니다 예 :
std::tuple<char *, int *, float *, const char *, const int *, const float *>;
내 솔루션을 현재 :
template<typename T>
struct include_const {};
template<typename... Types>
struct include_const<std::tuple<Types...>> {
using type = std::tuple<Types..., typename std::add_const<Types>::type...>;
};
이것은 std::tuple<types, const types>
입니다. 이 작품
template<typename T>
struct add_ptr {};
template<typename... Types>
struct add_ptr<std::tuple<Types...>> {
using type = std::tuple<typename std::add_pointer<Types>::type...>;
};
,하지만 난 좀 더 일반적인 얻을이 좋아하는 것 : 포인터를 얻으려면, 내가 사용할 수 있습니다 내가 나에게 모두 Types...
및 trait<Types>::type...
에 대한 포인터를 제공하는 template<trait, Types...> add_ptr
을 갖고 싶어, 그래서 사용은 할 수
add_ptr<std::add_const, my_types>
내가 add_ptr<std::add_volatile, my_types>
전에 언급 한 튜플 std::tuple<char *, volatile char *, ...>
내가이 달성 할 수있는 방법에 대한 몇 가지 힌트를 부탁드립니다 제공 : 다음과 같은합니다. 나는 그런
add_ptr<std::add_const, my_types>::type
이 될 것입니다 아직 템플릿 마술사있어 어떤 도움