Может ли переменная not-const nullptr_t быть аргументом, не относящимся к типу шаблона?C++

Программы на C++. Форум разработчиков
Anonymous
Может ли переменная not-const nullptr_t быть аргументом, не относящимся к типу шаблона?

Сообщение Anonymous »

Можно ли использовать неконстантную переменную со значением nullptr в качестве нетипового аргумента некоторого шаблона?
Например:

Код: Выделить всё

template
int v = 0;

int main() {
auto nil = nullptr;
return v;
}
Я вижу, что программа принимается как GCC, так и Clang. Но другие компиляторы с этим не согласны.
MSVC:

ошибка C2971: 'v': параметр шаблона 'P': 'nil': переменная с нестатической длительностью хранения не может использоваться в качестве аргумента, не являющегося типом.

EDG:

ошибка: аргумент типа. "std::nullptr_t" несовместим с параметром шаблона типа "int *"

Даже если я напишу template int v = 0; EDG всё равно не нравится:

ошибка: выражение должно иметь постоянное значение

Онлайн демо
Какая реализация правильная?

Подробнее здесь: https://stackoverflow.com/questions/798 ... e-argument

Вернуться в «C++»