simstr 1.6.1
Yet another strings library
 
Загрузка...
Поиск...
Не найдено
Шаблон структуры simstr::expr_choice_two_lit< K, N, P, M >

Строковое выражение условного выбора. Подробнее...

#include <strexpr.h>

Граф наследования:simstr::expr_choice_two_lit< K, N, P, M >:
simstr::expr_to_std_string< expr_choice_two_lit< K, N, P, M > >

Подробное описание

template<typename K, size_t N, typename P, size_t M>
struct simstr::expr_choice_two_lit< K, N, P, M >

Строковое выражение условного выбора.

Выражение, в зависимости от истинности условия генерирующее либо один строковый литерал, либо другой. Напрямую тип обычно не используется, создаётся через e_choice().

Так как строковые литералы не являются строковыми выражениями, то использовать их в виде одиночного выражения в частях e_choice или e_if требовало бы их обрамления какими-либо конструкциями, преобразующими их в строковое выражение. Приходилось бы писать например так:

e_choice(condition, text, e_t("empty"));
e_choice(condition, text, eea + "empty");
e_choice(condition, text, "empty"_ss);
e_if(!condition, "empty"_ss);
constexpr expr_if< A > e_if(bool c, const A &a)
Создание условного строкового выражения expr_if.
Определения strexpr.h:1513
constexpr expr_literal< typename const_lit< T >::symb_type, static_cast< size_t >(N - 1)> e_t(T &&s)
Преобразует строковый литерал в строковое выражение.
Определения strexpr.h:960
constexpr expr_choice< A, B > e_choice(bool c, const A &a, const B &b)
Создание условного строкового выражения expr_choice.
Определения strexpr.h:1435
constexpr empty_expr< u8s > eea
Пустое строковое выражение типа char.
Определения strexpr.h:819

Это, с одной стороны - захламляет код, с другой - делает его менее оптимальным. Поэтому для таких случаев сделаны перегрузки e_choice и e_if для случаев, когда их параметрами являются строковые литералы. В этих перегрузках и используются expr_choice_one_lit и expr_choice_two_lit, позволяя писать так:

e_choice(condition, text, "empty");
e_choice(condition, "false", "true");
e_if(!condition, "empty");

Объявления и описания членов структуры находятся в файле: