170 похожих чатов

В общем: #include<vector> #include<iostream> template<typename T> constexpr T foo () {

l1:
return 1;
}

int main () {
int x = foo<int>();
}

такой код компилится под GCC и MSVC (С++ 20, последние версии компиляторов), под Clang нет

в то же время

#include<vector>
#include<iostream>

constexpr int foo () {
l1:
return 1;
}

int main () {
int x = foo();
}
не компилится ни под что. Кто знает в чём разница?)

14 ответов

8 просмотров
Maks- Автор вопроса

Коллеги, помогите понять разницу, пожалуйста :)

ты все со своими метками. Это рабочая задача или спортивный интерес?

Maks- Автор вопроса

Так надо шаблон функции инстанциировать, для этого надо указать параметр шаблона (поскольку функция без параметров и этот параметр шаблона из параметров функции не может быть выведен)

Maks- Автор вопроса
Ilya Zviagin
Так надо шаблон функции инстанциировать, для этого...

Так я же явно foo<int> вызываю Это не так делается разве?

Maks- Автор вопроса
Ilya Zviagin
А, сори. Там не шаблон...

Да Шаблон компилится не шаблон не компилится)

Так не компилируется, а ЧТО ? В чём проблема ?

Maks- Автор вопроса
Ilya Zviagin
Так не компилируется, а ЧТО ? В чём проблема ?

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

https://godbolt.org/z/8nbqG7dTq

ну а так, я думаю версия с шаблоном в GCC MSVC отсеяла метку за ненадобностью, clang отсеивать не стал. В то же время без шаблона она ни у кого не была отсеяна

Maks- Автор вопроса
Ramil Rizvanov
ну а так, я думаю версия с шаблоном в GCC MSVC отс...

да, это вроде правда непонятно правда почему компилятор так себя ведёт :)

constexpr функция не должна иметь label в body, см https://en.cppreference.com/w/cpp/language/constexpr :

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Всем привет! Массив вводится с клавиатуры, кол-во элементов неизвестно, поэтому я указал arr db 100 dup(?) С нахождением максимума проблем нет, а вот минимум почему-то всегд...
En Vind Av Sorg
11
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
Я хочу запустить свой проект в тг. Что-то между пирамидой и майнилкой. Еще подобного ничего не было. Уникальная идея. Нужен именно не бот, а приложение. С ввод, выводом тон...
Павел А.
6
а как бы вылезти из ИО, что то типа IO -> Ether или в какую сторону смотреть ? что то туплю
Fedor
14
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Реально в одиночку написать игровой движок на Си?
ㅤ (SVO)
11
Всем привет, товарищи! Можете меня поздравить, получил "отлично" за дисциплину "языки программирования низкого уровня". Честно говоря, не очень хочу, чтобы основы асма, которы...
Ыиу
1
Карта сайта