Должны ли руководства по дедукции настаивать на создании экземпляра первичного шаблона?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Должны ли руководства по дедукции настаивать на создании экземпляра первичного шаблона?

Сообщение Anonymous »

Рассмотрим следующую иерархию с базовым классом, с неопределенным основным шаблоном и определенной специализацией, а также производным классом шаблона с руководством по выводам:

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

#include 

template 
struct fn_ref_call;

template 
struct fn_ref_call {
static constexpr bool enable = true;
};

template 
struct fn_ref : private fn_ref_call {
private:
using base = fn_ref_call;

public:
template
requires (base::enable)
fn_ref(F* f){}
};

template
requires std::is_function_v
fn_ref(F *) -> fn_ref;

int fn(int) { return 3; }

int main() {
fn_ref f{&fn};
}
Это скомпилировано MSVC и gcc, но не Clang: https://godbolt.org/z/Yfqhz1dW9
Clang пытается использовать неопределенный основной шаблон для CTAD.
Вопросы:
  • Правильен ли здесь clang?
  • Есть ли обходной путь?


Подробнее здесь: https://stackoverflow.com/questions/798 ... y-template
Ответить

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

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

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

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

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