v += data;
v -= data;
v *= data;
v /= data;
#include <iostream>
template <class Container, class Data>
void compute_vector_fast(Container& v, const Data& data) {
std::cout << "fast\n";
// ...
}
template <class Container, class Data>
void compute_vector_slow(Container& v, const Data& data) {
std::cout << "slow\n";
// ...
}
template <class Container, class Data>
void compute_vector_optimal(Container& v, const Data& data) {
// ??? call `compute_vector_slow(v, data)` or `compute_vector_fast(v, data)` ???
}
#include <iostream>
template <class T, class Data>
concept bool VectorOperations = requires(T& v, const Data& data) {
{ v += data } -> T&;
{ v -= data } -> T&;
{ v *= data } -> T&;
{ v /= data } -> T&;
};
template <class Container, class Data>
requires VectorOperations<Container, Data>
void compute_vector_optimal(Container& v, const Data& data) {
std::cout << "fast\n";
}
template <class Container, class Data>
void compute_vector_optimal(Container& v, const Data& data) {
std::cout << "slow\n";
}
#include <vector>
#include <experimantal/ranges/algorithm>
namespace ranges = std::experimental::ranges;
int main () {
// get_some_values_and_delimiter() ,
// 42
std::vector<int> v2 = get_some_values_and_delimiter();
// 42 , :
auto it = ranges::find(v.begin(), ranges::unreachable{}, 42);
ranges::sort(++it, v.end());
}
#include <ctime>
#include <iostream>
#include <string>
#include <experimental/net>
using net = std::experimental::net;
using net::ip::tcp;
std::string make_daytime_string() {
using namespace std; // For time_t, time and ctime;
time_t now = time(0);
return ctime(&now);
}
void start_accept(net::io_context& io_service) {
tcp::acceptor acceptor{io_service, tcp::endpoint(tcp::v4(), 13)};
while (1) {
tcp::socket socket(acceptor.get_io_service());
auto error = co_await acceptor.async_accept(socket, net::co_future);
if (error) break;
std::string message = make_daytime_string();
auto& [error, bytes] = co_await async_write(
socket, net::buffer(message), net::co_future
);
if (error) break;
}
}
int main() {
net::io_context io_service;
io_service.post([&io_service](){
try {
start_accept(io_service);
} catch (const std::exception& e) {
std::cerr << e.what() << std::endl;
}
});
io_service.run();
}
struct S {
unsigned x1:8 = 42;
unsigned x2:8 { 42 };
};
if constexpr (std::endian::native == std::endian::big) {
// big endian
} else if constexpr (std::endian::native == std::endian::little) {
// little endian
} else {
// mixed endian
}
struct foo { int a; int b; int c; };
foo b{.a = 1, .b = 2};
auto bar = []<class... Args>(Args&&... args) {
return foo(std::forward<Args>(args)...);
};
fmt::format("The answer is {}", 42);
Source: https://habr.com/ru/post/336264/
All Articles