C++代码里边如果加上了属性编程,生成的就是托管代码么

C++代码里面如果加上了属性编程,生成的就是托管代码么?
如下,我在网上看到msdn的例子程序,我自己测试了一下可以编译运行的:

[export]
struct SizedValue2 {
   [switch_type(char), switch_is(kind)] union {
      [case(1), string]
          wchar_t* wval;
      [default, string]
          char* val;
   };
    char kind;
};
[module(name="ATLFIRELib")];
int _tmain(int argc, _TCHAR* argv[])
{
SizedValue2 v;
v.kind=1;
v.wval=L"hello";
return 0;
}


请问,这里加上的[export]有什么作用么? SizedValue2里面的[switch_type(char), switch_is(kind)]对于编译的结果有什么影响? 是不是加上了以后,生成一种特殊形式的结构体是可以给com组件或者.net调用的,也就是说内存对象模型会有改变来适应com/.net?

不知道我的猜测和实际情况的出入在哪里。还请大侠斧正!
------解决方案--------------------
属性编程,ms已经不提倡了,
并且加了属性编程和是不是托管的没关系