les 3 lignes
std::unique_ptr<float []> load_intervals = unique_ptr<float[]>(new float [nbintervals+1]);
std::unique_ptr<float []> load_intervals (new float [nbintervals+1]);
std::unique_ptr<float []> load_intervals = new float [nbintervals+1];
génère les même expressions, grosso modo le compilateur génère ça
struct unique_ptr load_intervals;
std::unique_ptr<float []>::unique_ptr (&load_intervals, new float [nbintervals+1]); // constructeur
si tu fait
std::unique_ptr<float []> load_intervals;
load_intervals = unique_ptr<float[]>(new float [nbintervals+1]);
alors ta
struct unique_ptr temp;
std::unique_ptr<float []>::unique_ptr (&temp, new float [nbintervals+1])
struct unique_ptr load_intervals;
try {
std::unique_ptr<float []>::operator= (&load_intervals, &temp);
} finally {
std::unique_ptr<float []>::~unique_ptr (&temp);
}