- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
constexpr const char str1[] = "Anna";
constexpr const char str2[] = "Denis";
constexpr const char str3[] = "Vladimir";
constexpr const char str4[] = "Alexey";
constexpr const char *arr[] = { str1, str2, str3, str4 };
#define GetMaxLenght(array) \
constexpr unsigned char str_len(const char* const str) \
{\
return *str ? (1 + str_len(str + 1)) : 0;\
}\
\
template <int index> \
struct MaxLenght\
{\
static const int prev_size = MaxLenght<index-1>::max_size;\
static const int cur_size = str_len(array[index]);\
static const int max_size = cur_size > prev_size ? cur_size : prev_size;\
};\
\
template <>\
struct MaxLenght<-1>\
{\
static const int max_size = 0;\
};\
static const int AmountStr = sizeof(array) / sizeof(array[0]);\
static const int array##_max_size = MaxLenght<AmountStr-1>::max_size;
GetMaxLenght(arr);
// в *.cpp
// static_assert((arr_max_size == 8), "Error");
LispGovno 06.09.2013 13:25 # +2
bormand 06.09.2013 13:37 # 0
P.S. А, еще в 18й есть.
blackhearted 09.09.2013 11:19 # −3
bormand 09.09.2013 12:29 # +2
Ну же осилятор, дерзай, объясни нам зачем str_len описано внутри макроса ;)
А заодно объясни нам, неосиляторам, зачем вообще нужны одноразовые макросы, которые второй раз в той же единице компиляции юзать нельзя.
laMer007 09.09.2013 12:59 # +2
MAKE_UNIQUE_GENERATE_CODE - употреблён один раз
bormand 09.09.2013 16:11 # 0
roman-kashitsyn 09.09.2013 13:57 # +6
roman-kashitsyn 06.09.2013 13:32 # +2
bormand 06.09.2013 13:44 # +1
roman-kashitsyn 06.09.2013 14:34 # +9
Psionic 06.09.2013 15:06 # +2
guest 06.09.2013 15:09 # −7
У меня член встал.
govnomonad 06.09.2013 16:03 # −2
это Польша должна страдать
Psionic 07.09.2013 00:24 # −1
LispGovno 07.09.2013 01:28 # −1
roman-kashitsyn 06.09.2013 15:43 # +2
bormand 06.09.2013 15:46 # 0
Вместо http://govnokod.ru/comments проставляется http://govnokod.ru./comments.
roman-kashitsyn 06.09.2013 15:54 # 0
bormand 06.09.2013 16:23 # +2
LispGovno 06.09.2013 15:09 # +1
bormand 06.09.2013 15:41 # 0
guest 06.09.2013 19:43 # +3