小编Max*_*Max的帖子

为什么-1 >> 1是-1?而1 >> 1是0!

我有下一个代码:

std::cout << (-10 >> 1) << std::endl;
std::cout << (-9 >> 1) << std::endl;
std::cout << (-8 >> 1) << std::endl;
std::cout << (-7 >> 1) << std::endl;
std::cout << (-6 >> 1) << std::endl;
std::cout << (-5 >> 1) << std::endl;
std::cout << (-4 >> 1) << std::endl;
std::cout << (-3 >> 1) << std::endl;
std::cout << (-2 >> 1) << std::endl;
std::cout << (-1 >> 1) << std::endl;
Run Code Online (Sandbox Code Playgroud)

结果是:

-5
-5
-4
-4
-3
-3
-2
-2 …
Run Code Online (Sandbox Code Playgroud)

c++

16
推荐指数
2
解决办法
638
查看次数

将可变参数模板参数转换为其他类型

如何将类型从可变参数模板参数转换为另一种类型?

例如:

template <typename... T>
struct single
{
   std::tuple<T...> m_single;
};

template <typename... T>
struct sequences
{
   single<T...> get(size_t pos)
   {
       // I don't know how to convert here
       return std::make_tuple(std::get<0>(m_sequences)[pos]... std::get<N>(m_sequences)[pos]);
   }

   template <size_t Idx>
   std::vector<
      typename std::tuple_element<Idx, std::tuple<T...>>::type
      >
   get_sequence()
   {
      return std::get<Idx>(m_sequences);
   }

   std::tuple<T...> m_sequences; // std::tuple<std::vector<T...>> I don't know how to conver here
};
Run Code Online (Sandbox Code Playgroud)

我想这样写:

sequences<int, double, double> seq;
single<int, double, double> sin = seq.get(10);
Run Code Online (Sandbox Code Playgroud)

并且具有std::tuple<std::vector<int>, std::vector<double>, std::vector<double>>结构序列.并从中获得单身.

std::vector<single<T...>> 对我来说是个坏主意,因为我需要一个完整的序列,并且很容易从中复制它.

可能吗?

非常感谢你.对不起,我的英语不好.

c++ tuples variadic-templates c++11

13
推荐指数
1
解决办法
3401
查看次数

标签 统计

c++ ×2

c++11 ×1

tuples ×1

variadic-templates ×1