
Сообщение от
-=ЮрА=-
Не по теме:
~OhMyGodSoLong~, ну возьми напиши автор темы тебе будет благодарен. Пока решения кроме своего из поста 24 я так и не увидел
Меньше слов, больше действий
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| template <bool clause> struct static_assert__;
template <> struct static_assert__<true> {};
#define STATIC_ASSERT(clause) enum {___ = sizeof(static_assert__<(bool)(clause)>)}
class Foo {
STATIC_ASSERT(1 == 2);
};
int foo()
{
STATIC_ASSERT(1 == 2);
}
int main()
{
STATIC_ASSERT(1 == 2);
} |
|
Недостатки: нехорошее сообщение об ошибке и только одна штука на локальную область видимости (плюс засирание этой области идентификатором ___).
Штуку type_equals<T1, T2>, которая true для равных и false для различных типов уж сами напишете.