Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将函数模板实例用作属性访问器_C++_Templates_Visual C++_Properties - Fatal编程技术网

C++ 将函数模板实例用作属性访问器

C++ 将函数模板实例用作属性访问器,c++,templates,visual-c++,properties,C++,Templates,Visual C++,Properties,我正在使用Microsoft的\uu declspec(property())语言扩展为一组数据提供多种访问器。我试图通过使用函数模板来减少实际必须编写的访问器函数的数量,但在使其正常工作时遇到了困难。MSDN网站上没有太多关于你能做什么和不能做什么的信息,所以这有点棘手 理想情况下,我想要这样的东西: struct-vec2 { 浮动x,y; vec2(float x,float y):x(x),y(y){ }; 结构向量4 { 联合 { 结构{float x,y,z,w;}; 浮动数据[4]

我正在使用Microsoft的
\uu declspec(property())
语言扩展为一组数据提供多种访问器。我试图通过使用函数模板来减少实际必须编写的访问器函数的数量,但在使其正常工作时遇到了困难。MSDN网站上没有太多关于你能做什么和不能做什么的信息,所以这有点棘手

理想情况下,我想要这样的东西:

struct-vec2
{
浮动x,y;
vec2(float x,float y):x(x),y(y){
};
结构向量4
{
联合
{
结构{float x,y,z,w;};
浮动数据[4];
};
模板内联vec2get()
{
返回vec2(数据[a],数据[b]);
}
模板内联无效集(常量向量2&v)
{
数据[a]=v.x;
数据[b]=v.y;
}
//指定显式模板参数无效,会导致

//字符“而不是我怀疑您将用于类型双关的
union
上的语法错误,您是否考虑过使用
std::variant
?该类型双关是UB。@TEDLYNGOM:但OP不想要variant,而是“alias”@TedLyngmo我的意思是
联合
;正如我提到的,我试图以不同的方式读取相同的数据。@Jarod42它是怎样的UB?不是说它是一个有效的反论点,但我在任何地方都看到过它的使用,而且从我的经验来看,它一直工作得很好——特别是因为我在联合中使用了VC++对匿名结构的非标准扩展.说到底,这并不是世界末日,因为我能够——也将——摆脱这种联盟,通过
\uu declspec(property())
做一切。不过,很高兴知道这一点。