C++11 specifies destructors as noexcept by default. Is there a way I can get Clang to report cases where my noexcept destructors might throw an exception (and hence call std::terminate)?
Can Clang warn me when I might throw an exception from a `noexcept` destructor?
806 views Asked by fbrereto At
1
There are 1 answers
Related Questions in C++11
- lvalue and rvalue references
- c++ range-for loop over custom class ::begin() expects 1 argument, 0 provided
- Difference between INT_MIN , INT8_MIN , INT16_MIN. For MAX too
- I am getting segmentation failt while assigning the resourcemanager instance
- Prevent reordering of prefetch instruction in c++
- How to Use libcurl to Check HTTP/S Proxy?
- Why we use `class` when there's `struct` in C++?
- Memory Management in C++: Differences in allocating shared_ptr using new vs make_shared
- Does C++ range-based `for` make copies?
- Is the behaviour is determined when initliasing the inner class's static member variable's value equal to the outer class's static member variable?
- Question about initialization. The output must be zeros with C++11 and afterwards?
- How to replace non-standard "for each" received from Visual C++ users
- G ++ can not pass the parameters in using the C ++ 11 process library under Windows?
- Why the Variadic Constructor with std::is_constructible Fails to Handle Initializer List Initialization?
- Class Object Error 'Undefined Reference For'
Related Questions in EXCEPTION
- What should i use Exceptions or Monads for handle if service occur a problem?
- Python Requests: Handling Exceptions and Ensuring Server Response
- What is a better way to allow no user input while also preventing non-number inputs
- New error on random number assigned to local variable , Rails
- spring error exception with oauth2 and securityconfig
- Exception thrown: 'System.InvalidOperationException' in Microsoft.Data.SqlClient.dll
- How to fix this Row nested in Column exception issue in Flutter?
- GDI - Why the printing StartPage() function works in 32 bit but raises an exception in 64 bit?
- Handling Invalid Credential or Login error Exception in Python for Network Devices
- Execution failed for task ':app:compileFlutterBuildDebug'. > Process 'command 'C:\flutter\bin\flutter.bat'' finished with non-zero exit value 1Error:
- .NET 6 Custom Nuget package referencing other packages - Do I have to include the other packages myself?
- How to prevent Unity from catching and ignoring ALL exceptions
- My Google Apps Script renames all files in a folder from data in a spreadsheet. Can someone explain why it returns an exception error?
- Python (pylint): Catching general exceptions in validation procedures
- Need a simple example how to catch a data type error en C++
Related Questions in CLANG
- Compiling eBPF program in Docker fails due to missing '__u64' type
- Get search paths for headers in the standard library in Clang?
- Build LLVM, Clang and Libfuzzer
- build boost use libc++ on linux use wrong --target
- Clang possibly skipping line(s) of code while compiling
- ld: library 'nsl' not found, /usr/local/go/pkg/tool/darwin_arm64/link: running clang failed: exit status 1 in macOS
- duplicate symbol in clang for template specialization of static member
- Windows shared segment in clang
- How can I switch from clang11 to clang14 on freebsd?
- LLD: How to Use –dll and –add-stdcall-alias Swiches
- dyld error When Including Debug Symbols In native C Library
- How to build veins inet project in omnet
- R2 max value is outside of the allowed memory range after explicit bounds checking
- C++: initialization of auto&& with the ternary operator leads to the copy constructor call on MSVC
- How to identify call void @llvm.dbg.declare instructions in LLVM IR?
Related Questions in CLANG++
- File refuses to compile std::erase() even if using -std=g++23
- Get search paths for headers in the standard library in Clang?
- Is this a GCC optimiser bug or a feature?
- How can I switch from clang11 to clang14 on freebsd?
- Why breakpoint location is +4 bytes to the function address?
- How to fix loop not unrolled: the optimizer was unable to perform the requested transformation in clang?
- Problem with g++ on Mac using std::thread and exceptions
- g++ ok but clang no: return rvalue to lvalue
- how to fuzz program using libfuzzer?
- Why is bitset::set() triggering undefined behavior
- Android NDK: Linker Script .ld: OVERLAY : gives ld:4: malformed number: :
- How to generate binary executable from linked LLVM IR of CUDA files?
- How to use clang -cc1 to link object files
- clang 18 gives error "non C++20 importable modules" for "import std"
- Why is jthread not presented in libc++ (using clang 18, c++26)
Related Questions in NOEXCEPT
- What is the correct form of passing parameters to std::is_nothrow_assignable -like functions in C++?
- Should I use noexcept specifier and noexcept operator in most functions in C++?
- Understand what really happens when calling a throwing function in a noexcept function
- Putting 'noexcept' on possible UB
- Are these three default constructors equivalent in C++?
- Does noexcept matter with explicitly defaulted move constructor/assignment operator?
- Why would adding the "noexcept" keyword hurt a functions performance?
- Why would noexcept(true) fail where noexcept works?
- Why is the clear() function noexcept while the destructor not?
- Is it safe to throw exceptions from within C++ noexcept functions if you want to terminate the program?
- How to get noexcept-ness of a FunctionDecl in clang?
- Has GCC13 changed handling of noexcept function pointers?
- Proper Usage of `noexcept`
- C++: How to write a concept that demands that constructor is noexcept?
- Why does std::vector's swap function have a different noexcept specification than all other container's swap functions?
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
First, C++ does not specify destructors as
noexceptby default.It specifies them as
noexcept(all subobjects destructors are noexcept).Next, we can categorize expressions and statements in one category each of:
In all of them, only the first case will be marked as exceptional.
In order to give good results, the compiler must be able to analyze the program behavior sufficiently to determine whether for any possible state, a throwing expression is ever executed.
If you are happy with far too many warnings about impossible scenarios, you can get a result here.
Conversely, if you only want to warn about blatant cases, you might also get some results.
Trouble is, all the interesting cases devolve to solving the halting problem.
And no, we are no further along with it.