Perguntas com a marcação «c++»

C ++ é uma linguagem de programação de uso geral. Foi originalmente projetado como uma extensão para C e tem uma sintaxe semelhante, mas agora é uma linguagem completamente diferente. Use esta tag para perguntas sobre o código (a ser) compilado com um compilador C ++. Use uma tag específica da versão para perguntas relacionadas a uma revisão padrão específica [C ++ 11], [C ++ 14], [C ++ 17] ou [C ++ 20] etc.

2
T precisa ser um tipo completo para ser usado em `std :: declval <T>`?
Considere este exemplo (vindo daqui ): #include &lt;type_traits&gt; #include &lt;iostream&gt; template &lt;typename U&gt; struct A { }; struct B { template &lt;typename F = int&gt; A&lt;F&gt; f() { return A&lt;F&gt;{}; } using default_return_type = decltype(std::declval&lt;B&gt;().f()); }; int main() { B::default_return_type x{}; std::cout &lt;&lt; std::is_same&lt; B::default_return_type, A&lt;int&gt;&gt;::value; } Ele é compilado …



1
std :: function const correção
Suponha que eu tenha um tipo de chamada assim: struct mutable_callable { int my_mutable = 0; int operator()() { // Not const return my_mutable++; } }; Observe que mutable_callablepossui um não-const operator()que modifica uma variável de membro ..... Agora, suponha que eu crie um std::functionfora do meu tipo: std::function&lt;int()&gt; foo …

1
O span pode ser constexpr?
Todos os construtores de std :: span são declarados constexpr, no entanto, não consigo fazer com que nenhum deles funcione em um contexto constexpr. Descomentar qualquer um dos constexpr abaixo resultará em um erro de compilação. #include &lt;array&gt; #include &lt;span&gt; int main() { constexpr int carray[3] = { 0, 1, …
11 c++  constexpr  c++20 




6
Faixa inocente baseada em loop não funcionando
O seguinte não compila: #include &lt;iostream&gt; int main() { int a{},b{},c{},d{}; for (auto&amp; s : {a, b, c, d}) { s = 1; } std::cout &lt;&lt; a &lt;&lt; std::endl; return 0; } Experimente no godbolt O erro do compilador é: error: assignment of read-only reference 's' Agora, no meu caso …



1
Um modelo de variável pode ser passado como um argumento de modelo?
O exemplo sem sentido a seguir não é compilado, mas existe outra maneira de passar um modelo de variável como argumento de modelo? template&lt;typename T&gt; constexpr auto zero = T{0}; template&lt;typename T, template&lt;typename&gt; auto VariableTemplate&gt; constexpr auto add_one() { return VariableTemplate&lt;T&gt; + T{1}; } int main() { return add_one&lt;int, zero&gt;(); …




Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.