Здравствуйте, Аноним, Вы писали:
А>Hi,
А>А>void Baz(float * ptr, size_t size)
А>{
А> for (size_t i = 0; i < size; ++i)
А> {
А> ptr[i] = (float)rand() / (float)RAND_MAX;
А> }
А>}
А>template <class T>
А>class Foo
А>{
А>public:
А> T a;
А> T b;
А> T c;
А> enum {size = 3};
А>};
А>template <template <class> class T>
А>void Bar(T<float> var)
А>{
А> Baz(&var, T::size); // Нет ли здесь Undefined behaviour или чего еще плохого?
А>}
А>
UB. Foo не является layout compatible с массивом float-ов.
Я бы на твоем месте в классе Foo завел явный массив с нужными тебе типом и размером, а a, b и с сделал был ссылками на конкретные его элементы — тогда бы все работало.