C++20 modules TS: still need function declaration?
I hope a quick small question to those who tried C++20 modules
According to TS, should this code compile in C++20?
void f1() f2();
void f2() ...
For example, in C++11 it won't compile, because f1() doesn't "know" about the f2(), f2() must be declared before usage.
But maybe in C++20 this requirement will be eliminated in modules?
If the first code snippet is not compiled, will this one compile
void f1() f2();
export void f2() ...
because f2() will be seen from the BMI?
c++ module function-declaration c++20
add a comment |
I hope a quick small question to those who tried C++20 modules
According to TS, should this code compile in C++20?
void f1() f2();
void f2() ...
For example, in C++11 it won't compile, because f1() doesn't "know" about the f2(), f2() must be declared before usage.
But maybe in C++20 this requirement will be eliminated in modules?
If the first code snippet is not compiled, will this one compile
void f1() f2();
export void f2() ...
because f2() will be seen from the BMI?
c++ module function-declaration c++20
add a comment |
I hope a quick small question to those who tried C++20 modules
According to TS, should this code compile in C++20?
void f1() f2();
void f2() ...
For example, in C++11 it won't compile, because f1() doesn't "know" about the f2(), f2() must be declared before usage.
But maybe in C++20 this requirement will be eliminated in modules?
If the first code snippet is not compiled, will this one compile
void f1() f2();
export void f2() ...
because f2() will be seen from the BMI?
c++ module function-declaration c++20
I hope a quick small question to those who tried C++20 modules
According to TS, should this code compile in C++20?
void f1() f2();
void f2() ...
For example, in C++11 it won't compile, because f1() doesn't "know" about the f2(), f2() must be declared before usage.
But maybe in C++20 this requirement will be eliminated in modules?
If the first code snippet is not compiled, will this one compile
void f1() f2();
export void f2() ...
because f2() will be seen from the BMI?
c++ module function-declaration c++20
c++ module function-declaration c++20
edited Nov 14 '18 at 21:04
Barry
183k20318583
183k20318583
asked Nov 14 '18 at 19:49
Alek86Alek86
824722
824722
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Modules are not yet in C++20. They may end up there, but they are not there yet.
That said, while Modules does change many things about name lookup (the latest paper I'm aware of is P1103R1), Modules will not change the fundamental property of C++ that names must be declared before use (modulo things like dependent unqualified calls - which simply delays the lookup, but it still has to actually happen).
This:
void f1() f2();
export void f2() ...
will still be a compile error if there is no previous declaration of f2
or it wasn't imported from somewhere. You'll have to write:
export void f2() ...
void f1() f2();
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53307773%2fc20-modules-ts-still-need-function-declaration%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Modules are not yet in C++20. They may end up there, but they are not there yet.
That said, while Modules does change many things about name lookup (the latest paper I'm aware of is P1103R1), Modules will not change the fundamental property of C++ that names must be declared before use (modulo things like dependent unqualified calls - which simply delays the lookup, but it still has to actually happen).
This:
void f1() f2();
export void f2() ...
will still be a compile error if there is no previous declaration of f2
or it wasn't imported from somewhere. You'll have to write:
export void f2() ...
void f1() f2();
add a comment |
Modules are not yet in C++20. They may end up there, but they are not there yet.
That said, while Modules does change many things about name lookup (the latest paper I'm aware of is P1103R1), Modules will not change the fundamental property of C++ that names must be declared before use (modulo things like dependent unqualified calls - which simply delays the lookup, but it still has to actually happen).
This:
void f1() f2();
export void f2() ...
will still be a compile error if there is no previous declaration of f2
or it wasn't imported from somewhere. You'll have to write:
export void f2() ...
void f1() f2();
add a comment |
Modules are not yet in C++20. They may end up there, but they are not there yet.
That said, while Modules does change many things about name lookup (the latest paper I'm aware of is P1103R1), Modules will not change the fundamental property of C++ that names must be declared before use (modulo things like dependent unqualified calls - which simply delays the lookup, but it still has to actually happen).
This:
void f1() f2();
export void f2() ...
will still be a compile error if there is no previous declaration of f2
or it wasn't imported from somewhere. You'll have to write:
export void f2() ...
void f1() f2();
Modules are not yet in C++20. They may end up there, but they are not there yet.
That said, while Modules does change many things about name lookup (the latest paper I'm aware of is P1103R1), Modules will not change the fundamental property of C++ that names must be declared before use (modulo things like dependent unqualified calls - which simply delays the lookup, but it still has to actually happen).
This:
void f1() f2();
export void f2() ...
will still be a compile error if there is no previous declaration of f2
or it wasn't imported from somewhere. You'll have to write:
export void f2() ...
void f1() f2();
edited Nov 14 '18 at 21:14
answered Nov 14 '18 at 21:08
BarryBarry
183k20318583
183k20318583
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53307773%2fc20-modules-ts-still-need-function-declaration%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown