Почему NV CC не нравится инициализация по умолчанию для std :: arrays? - PullRequest
2 голосов
/ 11 апреля 2020

Рассмотрим следующую программу:

#include <array>

int main() {
        struct A {
                bool valid = true;
                ~A() { valid = false; }
        };

        const std::array<A, 1> a;
        const A& aa = a.at(0);
        return aa.valid;
}

Это то, что я получаю при компиляции с g ++ и nv cc соответственно:

$ g++ -Wall -std=c++14  -o a -x c++ a.cu
$ nvcc --std=c++14 -o a a.cu
a.cu(9): warning: const variable "a" requires an initializer -- class "std::array<A, 1UL>" has no user-provided default constructor

a.cu(9): warning: const variable "a" requires an initializer -- class "std::array<A, 1UL>" has no user-provided default constructor

Почему это предупреждение? Нет ли конструктора по умолчанию для массива? G CC, кажется, думает, что есть.

Примечания:

  • Использование NV CC 10.1 на Devuan GNU / Linux 3.
  • То же результаты, если я использую --std=c++11.
...