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

Является ли out of class member definition - declaration? Желательно

с отсылкой на стандарт. Уже 3 часа пытаюсь найти.

struct A {
void a();
};

void A::a() {}

Является ли void A::a() {} объявлением?

12 ответов

21 просмотр

Думаю, что является. Не уверен, указано ли это где-то непосредственно, но в стандарте есть такой пример для шаблона функции: template <class T> decltype(g(T())) h(); int g(int); template <class T> decltype(g(T())) h() // redeclaration of h() uses the earlier lookup… { return g(T()); } // … although the lookup here does find g(int)

Red-Paper Автор вопроса
Ofee Oficsu
Думаю, что является. Не уверен, указано ли это где...

Definition, который не out of class - это же всегда ещё и declaration, как я понимаю. Пример вроде совсем не про это. Или я что-то не так понял?

Red Paper
Definition, который не out of class - это же всег...

Да, пример не совсем про методы, но я не думаю, что для определения out of class есть основания считать иначе И есть ещё один подходящий пункт: A redeclaration of a class member outside its class definition shall be a definition, an explicit specialization, or an explicit instantiation Тут однозначно даётся понять, что определения снаружи класса (как минимум) могут являться (ре)декларациями

Red-Paper Автор вопроса
Ofee Oficsu
Да, пример не совсем про методы, но я не думаю, чт...

Действительно. Написано, что переобъявление снаружи может являтся определением.

Я конечно не эксперт, и cppref не стандарт, но если открыть https://en.cppreference.com/w/cpp/language/definition то лично у меня вопросов не возникает

Нет не является

Red-Paper Автор вопроса
Ilya Zviagin
Нет не является

Есть более формальные объяснение?

Red-Paper Автор вопроса
Ilya Zviagin
Нет не является

Интересно услышать мнение Ильи. Мне кажется, он что-то знает...

Red-Paper Автор вопроса

.

Red Paper
.

Ну он откуда берётся вообще

Red Paper
Есть более формальные объяснение?

Тут https://en.cppreference.com/w/cpp/language/static Заметь слово declares в первом предложении. Если надо стандарт, там есть ссылки и на стандарт

Red-Paper Автор вопроса
Ilya Zviagin
Тут https://en.cppreference.com/w/cpp/language/st...

Заметь слово static. Мой кейс с нестатик членами.

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта