- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
#include <stdio.h>
#include <type_traits>
#include <string>
struct hack_t{};
template<class TYPE>static hack_t operator&(const TYPE&,hack_t){return hack_t();}
int main()
{
struct type{};
std::string var="win";
#define get_meta(var)[&]()->bool{hack_t unnamed;hack_t foo(var&unnamed);return std::is_function<decltype(foo)>::value;}()
bool result_0=get_meta(var);
bool result_1=get_meta(type);
#undef get_meta
printf("get_meta(var) == %s\n",result_0?"true":"false");
printf("get_meta(type) == %s\n",result_1?"true":"false");
return 0;
}
Код отличает переменную от типа.
http://ideone.com/t7BBO4
Сами знаете откуда.
defecate-plusplus 28.11.2012 09:18 # +6
bormand 28.11.2012 09:30 # +1
defecate-plusplus 28.11.2012 09:35 # +3
не знаю
LispGovno 28.11.2012 09:42 # +1
bormand 28.11.2012 09:46 # +1
Есть одна идея, минут через 20 попробую реализовать ее.
LispGovno 03.12.2012 23:11 # 0