Rotates the element of a product type R positions to the left, wrapping around when getting to the beginning.
On record types, this function operates on elements as if they were ordered. The considered order is the order of declaration.
- Template Parameters
-
- Parameters
-
- Returns
- A product type equivalent to t with elements rotated R positions to the left.
Helper type
namespace kumi::result
{
template<std::
size_t R, product_type T>
struct rotate_left;
template<std::size_t R, product_type T>
}
constexpr auto rotate_left(T &&t)
Rotates the element of a product type R positions to the left, wrapping around when getting to the be...
Definition rotate.hpp:66
Computes the return type of a call to kumi::rotate_left
Examples:
Tuple:
#include <kumi/kumi.hpp>
#include <iostream>
int main()
{
std::cout << values << "\n";
std::cout << kumi::rotate_left<1>(values) << "\n";
std::cout << kumi::rotate_left<3>(values) << "\n";
}
Fixed-size collection of heterogeneous values.
Definition tuple.hpp:33
Record:
#include <kumi/kumi.hpp>
#include <iostream>
int main()
{
using namespace kumi::literals;
auto values =
kumi::record{
"a"_id=1,
"b"_id=2,
"c"_id=3,
"d"_id=4,
"e"_id=5,
"f"_id=6};
std::cout << values << "\n";
std::cout << kumi::rotate_left<1>(values) << "\n";
std::cout << kumi::rotate_left<3>(values) << "\n";
}
Fixed-size collection of heterogeneous tagged fields, tags are unique.
Definition record.hpp:36