«c++» etiketlenmiş sorular

C ++ genel amaçlı bir programlama dilidir. Başlangıçta C'nin bir uzantısı olarak tasarlanmıştır ve benzer bir sözdizimine sahiptir, ancak şimdi tamamen farklı bir dildir. Bir C ++ derleyicisiyle derlenecek kod (sorulacak) ile ilgili sorular için bu etiketi kullanın. Belirli bir standart revizyon [C ++ 11], [C ++ 14], [C ++ 17] veya [C ++ 20] vb. İle ilgili sorular için sürüme özgü bir etiket kullanın.

1
Satır içi bir değişken C ++ 17'de başlatıldıktan sonra değiştirilebilir mi?
Benim senaryom aşağıdaki (clang çalıştı ama gcc değil) liba.hpp: inline int MY_GLOBAL = 0; libother.cpp: (dll) #include "myliba.hpp" void myFunc() { // MYGLOBAL = 28; } someexe.cpp: RunAppThatUsesBothLibAandLibOther(); Sorun, satır içi değişkenin çalışma zamanında değiştirildiği için 28'i beklediğim yerlerde 0 göstermesidir. MSVC buna katılmıyor, ancak clang beklediğim şeyi yapıyor. Soru …
11 c++  visual-c++  dll  clang  c++17 

1
std :: işlev sabitliği
Diyelim ki böyle bir çağrılabilir türü var: struct mutable_callable { int my_mutable = 0; int operator()() { // Not const return my_mutable++; } }; Not mutable_callableolmayan bir const sahiptir operator()değiştirir üye değişkeni olduğunu ..... Şimdi varsayalım türümden bir std::functiondışarı: std::function<int()> foo = mutable_callable{}; Şimdi bunu yapabilirim: void invoke(std::function<int()> const& z) …

1
Span, constexpr olabilir mi?
Std :: span'ın tüm kurucuları constexpr olarak ilan edilir, ancak hiçbirinin bir bağlam bağlamında çalışmasını sağlayamıyorum. Aşağıdaki bağlamlardan herhangi birinin kaldırılması derleme hatasına neden olacaktır. #include <array> #include <span> int main() { constexpr int carray[3] = { 0, 1, 2 }; constexpr std::array<int, 3> array{ 0, 1, 2 }; using …
11 c++  constexpr  c++20 



5
Lambda C ++ üçlü ataması
Aşağıdaki snippet'in neden derlenmediğine dair bir fikriniz var mı? "Hata: operands?: Farklı türleri var" hatasıyla şikayet ediyor auto lambda1 = [&](T& arg) { ... }; auto lambda2 = [&](T& arg) { ... }; auto lambda = condition ? lambda1 : lambda2;

6
Döngü çalışmayan masum aralık
Aşağıdaki gelmez değil derlemek: #include <iostream> int main() { int a{},b{},c{},d{}; for (auto& s : {a, b, c, d}) { s = 1; } std::cout << a << std::endl; return 0; } Godbolt üzerinde dene Derleyici hatası: error: assignment of read-only reference 's' Şimdi benim gerçek durumumda liste bir sınıftaki …


2
Dönüş türünü açıkça belirtmesine rağmen lambda'ya çağrı belirsiz
Aşırı yüklenmiş bir fonksiyon, lambda türünün karar verilebilir olması durumunda std::function( her ikisini de almalı (bir yanıltıcı olursam lütfen beni düzeltin)) Her iki işlevi de almalıdır . tanımlandı? ( [&]() -> Type {}) Mevcut çözümüm için referans yakalamaya ihtiyacım olduğunu, kodun bunun için mantığı içerdiğini lütfen unutmayın. Aşağıdaki örnekte sorun …

1
Değişken bir şablon, şablon şablonu argümanı olarak iletilebilir mi?
Aşağıdaki saçma örnek derlenmez, ancak şablon şablonu bağımsız değişkeni olarak bir değişken şablonu geçirmenin başka bir yolu var mı? template<typename T> constexpr auto zero = T{0}; template<typename T, template<typename> auto VariableTemplate> constexpr auto add_one() { return VariableTemplate<T> + T{1}; } int main() { return add_one<int, zero>(); } Derleyici Gezgini'ni deneyin


1
Modern OpenMP desteği almak için CMake'i Windows'ta komut satırından clang kullanacak şekilde yapılandırın
Paralelleştirme için OpenMP kullanan küçük bir test projem var. Amacım bunu üretecek şekilde .dllve .libkütüphaneler için derlemektir (çünkü gerçek projem bu türler kullanılarak dağıtılan harici kütüphanelere bağlanır), OpenMP 4.5 veya daha yeni bir desteğiyle bunu yapmak ve komut satırından bunu yapmak için bir docker'da yapılabilir. test etme ve kontrol etme …

2
zayıf_ptr sıfırlama paylaşılan_ptr'u etkiler mi?
Kullanmaya pek alışkın weak_ptrdeğilim ve oldukça kafa karıştırıcı bir durumla karşı karşıyayım. Ben kullanıyorum Intel XE 2019 Besteci güncelleme 5 ( paket 2019.5.281 ile combinaison olarak) ver Visual Studio 2019. 16.2.5 . 64 bit derliyorum. Standart C ++ 17 kullanıyorum . İşte benim spike çözümü için kod: #include <memory> #include …

3
Paralel yürütme ilkesi ile yerinde std :: transform kullanabilir miyim?
Yanılmıyorsam, bir giriş ve çıkış yineleyicisi ile aynı aralığı kullanarak yerindestd::transform performans gösterebilirim . Bazı nesnelerim olduğunu varsayalım , o zaman yazardımstd::vectorvec std::transform(vec.cbegin(),vec.cend(),vec.begin(),unary_op) uygun bir tekli işlem kullanarak unary_op. C ++ 17 standardını kullanarak, std::execution::parilk argüman olarak oraya yapıştırarak dönüşümü paralel olarak yürütmek istiyorum . Bu, fonksiyonun cppreference makalesindestd::transform aşırı …

3
Bir vektör öğesi olarak 0 tamsayısından işaretçiye örtük dönüşümlerden nasıl kaçınılır
JSON'da bir anahtar yolunun tüm düğüm adlarını toplamak istediğim bir durum var. "0" dizi indeksinin durumuna da izin verilsin, ancak alıntıları unutmak kolaydır, bu da dereference olduğunda çökmeye neden olur. Bu yüzden bunu reddetmek istiyorum. Misal: #include <vector> #include <iostream> int func(const std::vector<const char*>& pin) { return pin.size(); } int …

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.