#include <iostream>
#include <array>
namespace rs {
struct float3 {
float x, y, z;
};
}
class foo
{
public:
template <class T>
void bar(T arg1, int arg2, int arg3) {
std::cout << "non-array bar:" << std::endl;
std::cout << " " << arg1 << " " << arg2 << " " << arg3 << std::endl;
}
template <size_t size>
void bar(std::array<rs::float3, size> arg1, int arg2) {
std::cout << "array bar:" << std::endl;
for (size_t i = 0; i < size; ++i) {
std::cout << " [" << i << "] = {" << arg1[i].x << "," << arg1[i].y << "," << arg1[i].z << "}" << std::endl;
}
std::cout << " " << arg2 << std::endl;
}
};
int main() {
foo f;
f.bar("test", 2, 3);
std::array<rs::float3, 2> arr;
arr[0].x = arr[0].y = arr[0].z = 1.0;
arr[1].x = arr[1].y = arr[1].z = 2.0;
f.bar(arr, 12345);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YXJyYXk+CgpuYW1lc3BhY2UgcnMgewogICAgc3RydWN0IGZsb2F0MyB7CiAgICAgICAgZmxvYXQgeCwgeSwgejsKICAgIH07Cn0KCmNsYXNzIGZvbwp7CnB1YmxpYzoKICAgIHRlbXBsYXRlIDxjbGFzcyBUPgogICAgdm9pZCBiYXIoVCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMpIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgIm5vbi1hcnJheSBiYXI6IiA8PCBzdGQ6OmVuZGw7CiAgICAgICAgc3RkOjpjb3V0IDw8ICIgICIgPDwgYXJnMSA8PCAiICIgPDwgYXJnMiA8PCAiICIgPDwgYXJnMyA8PCBzdGQ6OmVuZGw7CiAgICB9CgogICAgdGVtcGxhdGUgPHNpemVfdCBzaXplPgogICAgdm9pZCBiYXIoc3RkOjphcnJheTxyczo6ZmxvYXQzLCBzaXplPiBhcmcxLCBpbnQgYXJnMikgeyAKICAgICAgICBzdGQ6OmNvdXQgPDwgImFycmF5IGJhcjoiIDw8IHN0ZDo6ZW5kbDsKICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIiAgWyIgPDwgaSA8PCAiXSA9IHsiIDw8IGFyZzFbaV0ueCA8PCAiLCIgPDwgYXJnMVtpXS55IDw8ICIsIiA8PCBhcmcxW2ldLnogPDwgIn0iIDw8IHN0ZDo6ZW5kbDsKICAgICAgICB9CiAgICAgICAgc3RkOjpjb3V0IDw8ICIgICIgPDwgYXJnMiA8PCBzdGQ6OmVuZGw7CiAgICB9Cn07CgppbnQgbWFpbigpIHsKICAgIGZvbyBmOwoKICAgIGYuYmFyKCJ0ZXN0IiwgMiwgMyk7CgogICAgc3RkOjphcnJheTxyczo6ZmxvYXQzLCAyPiBhcnI7CiAgICBhcnJbMF0ueCA9IGFyclswXS55ID0gYXJyWzBdLnogPSAxLjA7CiAgICBhcnJbMV0ueCA9IGFyclsxXS55ID0gYXJyWzFdLnogPSAyLjA7CiAgICBmLmJhcihhcnIsIDEyMzQ1KTsKCiAgICByZXR1cm4gMDsKfQ==