Почему компилятор жалуется на `std::enable_if::value>::type*=nullptr`? [дубликат]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему компилятор жалуется на `std::enable_if::value>::type*=nullptr`? [дубликат]

Сообщение Anonymous »

Не могу понять почему

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

std::enable_if::type*=nullptr
не работает, а

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

std::enable_if::type* =nullptr
работает хорошо.
Разница — это просто пустое место. Рассматривается ли *= как оператор?
Вот фрагмент кода:

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

#include 
#include 

template
class is_allowed_type:public std::false_type{};

template
class is_allowed_type:public std::true_type{};

template
class is_allowed_type:public std::true_type{};

template
typename std::enable_if::type foo(T val){}

template
void goo(T val){}

template
void koo(T val, typename std::enable_if::type*=nullptr){}

template
void hoo(T val, typename std::enable_if::type* = nullptr){}

int main() {
unsigned char val{'0'};
uint16_t num{0};
foo(val);  //works;
foo(num);  //works;
//foo(6);    //not compile as expected
//foo(3.14); //not compile as expected
return 0;
}
Вот на что жалуется компилятор:

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

:20:73: error: expected ')'
20 | void koo(T val, typename std::enable_if::type*=nullptr){}
|                                                                         ^
:20:9: note: to match this '('
20 | void koo(T val, typename std::enable_if::type*=nullptr){}
|         ^
1 error generated.
Я провел простой тест, чтобы проверить свое предположение, что компилятор снова соответствует.

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

void foo1(int*=nullptr){}
void foo2(int* =nullptr){}

int main() {
return 0;
}
Мне очень интересно узнать причину этого.

Подробнее здесь: https://stackoverflow.com/questions/784 ... tvaluetype
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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