Questions tagged [exception-specification]
47 questions
                    
                    35
                    
            votes
                
                1 answer
            
        Questions about Hinnant's stack allocator
I've been using Howard Hinnant's stack allocator and it works like a charm, but some details of the implementation are a little unclear to me.
Why are global operators new and delete used? The allocate() and deallocate() member functions use…
         
    
    
        TemplateRex
        
- 69,038
- 19
- 164
- 304
                    21
                    
            votes
                
                5 answers
            
        c++1z dynamic exception specification error
I am trying to compile my project with new GCC version 7.2.1 and have a problem with dynamic exception specifications:
error: ISO C++1z does not allow dynamic exception specifications
  MEMORY_ALLOC_OPERATORS(SQLException)
The problem is that these…
         
    
    
        Pustovalov Dmitry
        
- 998
- 1
- 9
- 25
                    17
                    
            votes
                
                2 answers
            
        How can std::runtime_error::runtime_error(const std::string&) meet std::exception's requirement of throw()?
std::exception requires that its constructor be throw(). Yet std::runtime_error accepts a std::string as its argument, which indicates that it's storing a std::string somewhere. Therefore, an assignment or copy construction has to be going on…
         
    
    
        Billy ONeal
        
- 104,103
- 58
- 317
- 552
                    16
                    
            votes
                
                3 answers
            
        Exception Specification
I know that this feature will be deprecated in C++0x, but for me as a total novice it seems like a good idea to have it. Could anyone explain to me why isn't a good idea?  
         
    
    
        There is nothing we can do
        
- 23,727
- 30
- 106
- 194
                    14
                    
            votes
                
                1 answer
            
        Is there any point in declaring a deleted function as noexcept?
Consider these two possible definitions for a class:
Exhibit A:
struct A
{
    A() = delete;
};
Exhibit A′:
struct A
{
    A() noexcept = delete;
}
Is there any point in declaring a deleted function as noexcept?
         
    
    
        user2296177
        
- 2,807
- 1
- 15
- 26
                    14
                    
            votes
                
                1 answer
            
        How does an exception specification affect virtual destructor overriding?
The C++ Standard states the following about virtual functions that have exception specifications:
If a virtual function has an exception-specification, all declarations, including the definition, of any function that overrides that virtual function…
         
    
    
        James McNellis
        
- 348,265
- 75
- 913
- 977
                    12
                    
            votes
                
                1 answer
            
        Why std::map find() is not declared as noexcept?
C++14 standard defines the find() member functions of std::map as follows:
iterator find(const key_type& x);
const_iterator find(const key_type& x) const;
Why are these functions not defined as noexcept? What could possibly go wrong inside, that…
         
    
    
        PowerGamer
        
- 2,106
- 2
- 17
- 33
                    12
                    
            votes
                
                3 answers
            
        Transitioning to C++11 where destructors are implicitly declared with noexcept
In C++11, a destructor without any exception specification is implicitly declared with noexcept, which is a change from C++03. Therefore, a code which used to throw from destructors in C++03 would still compile fine in C++11, but will crash at…
         
    
    
        dragonroot
        
- 5,653
- 3
- 38
- 63
                    10
                    
            votes
                
                2 answers
            
        Why are C++ exception specifications not checked at compile-time?
I just read that in the C++11 standard revision, exception specifications were deprecated. I previously thought specifying what your functions may throw is good practice, but apparently, not so.
After reading Herb Stutter's well-cited article, I…
         
    
    
        Taral
        
- 327
- 1
- 15
                    10
                    
            votes
                
                11 answers
            
        Is there a generally accepted idiom for indicating C++ code can throw exceptions?
I have seen problems when using C++ code that, unexpectedly to the caller, throws an exception. It's not always possible or practical to read every line of a module that you are using to see if it throws exceptions and if so, what type of…
         
    
    
        David Coufal
        
- 6,021
- 5
- 28
- 30
                    9
                    
            votes
                
                1 answer
            
        Exception specifications when deriving from std::exception in C++11
I have an exception class as follows:
#include 
struct InvalidPathException : public std::exception
{
   explicit InvalidPathException() {}
   const char* what() const;
};
const char*
InvalidPathException::what() const {
    return… 
         
    
    
        beldaz
        
- 4,299
- 3
- 43
- 63
                    9
                    
            votes
                
                2 answers
            
        What is the exception specification for a defaulted virtual destructor in C++11?
Suppose I have:
class Foo
{
public:
   virtual ~Foo()=default;
};
What is the exception-specification on the defaulted destructor?  Is the defaulted destructor equivalent to:
   virtual ~Foo() {};
or
   virtual ~Foo() throw() {};
or
   virtual…
         
    
    
        user1414050
        
- 99
- 1
- 2
                    7
                    
            votes
                
                2 answers
            
        How to get rid of "C++ exception specification ignored" warning
I recently got a dll that has been implemented by others. I have to use it in my application. In the header file of their class they have the function declaration 
void func1() throw (CCustomException);
Now when i compile it am getting the…
         
    
    
        liaK
        
- 11,422
- 11
- 48
- 73
                    7
                    
            votes
                
                2 answers
            
        Exception specification when overriding a virtual function
Consider the following code:
class A
{
public:
    virtual void f() throw ( int ) { }
};
class B: public A
{
public:
    void f() throw ( int, double ) { }
};
When compiled, it says that derived class B has a looser throw specifier compared to A.…
         
    
    
        jasonline
        
- 8,646
- 19
- 59
- 80
                    5
                    
            votes
                
                1 answer
            
        Exception specification in ˋtypedefˋ completely forbidden or only at toplevel?
In C++14 Sec 15.4;2 it is stated, that ... An exception-specification shall not appear in a typedef declaration or alias-declaration.
That means the following is forbidden:
typedef void (*fn)(int) noexcept;
But does the the wording shall not appear…
         
    
    
        chi
        
- 309
- 1
- 4