Asm constexprs (Using the GNU Compiler Collection (GCC)) (original) (raw)
6.11.4 C++11 Constant Expressions instead of String Literals ¶
In C++ with -std=gnu++11 or later, strings that appear in asm syntax—specifically, the assembler template, constraints, and clobbers—can be specified as parenthesized compile-time constant expressions as well as by string literals. The parentheses around such an expression are a required part of the syntax. The constant expression can return a container with data ()
and size ()
member functions, following similar rules as the C++26 static_assert
message. Any string is converted to the character set of the source code. When this feature is available the __GXX_CONSTEXPR_ASM__
preprocessor macro is predefined.
This extension is supported for both the basic and extended asm syntax.
#include constexpr std::string_view genfoo() { return "foo"; }
void function() { asm((genfoo())); }