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 ответов

28 просмотров
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 :

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта