Author |
Topic |
|
znakeeye
Tomato Guru
379 Posts |
Posted - Jul 15 2007 : 9:39:28 PM
|
This is a valid function declaration in C++:
void Foo() throw(...) {}
However, when typing the dots you get this (build 1555):
throw(..->)
Quite irritating, yes |
|
bugfix
Tomato Guru
Germany
324 Posts |
Posted - Jul 16 2007 : 03:59:04 AM
|
no it's not:) void Foo() throw() {} is. and it's a definition not a declaration:P |
http://www.mf-sd.de |
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Jul 16 2007 : 08:03:36 AM
|
For now I am going to avoid getting into semantics
znakeeye which IDE are you using? Are you typing in a header file or a cpp file? How easily can you reproduce this problem? Does typing speed seem to be a factor?
This bug should have been fixed a while ago now. We have had a few reports of this since then, but so far I have never been able to reproduce this problem. |
zen is the art of being at one with the two'ness |
|
|
kevinsikes
Tomato Guru
USA
271 Posts |
Posted - Jul 16 2007 : 3:22:47 PM
|
catch(...) is a valid construct, are you seeing the problem with catch as well? |
Kevin Sikes Infotainment Platform Design Engineer Ford Motor Company |
|
|
znakeeye
Tomato Guru
379 Posts |
Posted - Jul 17 2007 : 10:52:08 AM
|
Sidenote: bugfix, throw(...) is indeed correct syntax.
IDE = VS 2005 SP1 VAX = 10.3.1557 (sorry, not 1555 as mentioned above) Typing speed is not a factor. In fact, if I hold down '.' I get this: throw(..->->->->->->->->->->->->->->
Hope this helps. |
|
|
znakeeye
Tomato Guru
379 Posts |
Posted - Jul 17 2007 : 11:00:33 AM
|
Oh, I forgot... catch(...) works as expected. |
|
|
bugfix
Tomato Guru
Germany
324 Posts |
Posted - Jul 17 2007 : 11:51:38 AM
|
according to ISOIEC14882-2003 15.4 Exception specifications it's not. you can specify a type_id list and ... is certainly not one. |
http://www.mf-sd.de |
|
|
mwb1100
Ketchup Master
82 Posts |
Posted - Jul 17 2007 : 2:46:13 PM
|
quote: Originally posted by bugfix
according to ISOIEC14882-2003 15.4 Exception specifications it's not. you can specify a type_id list and ... is certainly not one.
"throw(...)" as an exception specification is a Microsoft extension. |
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Jul 17 2007 : 3:28:48 PM
|
For me this code compiles quite happily in a cpp file in VS2005:
void Foo() throw(...) {}
since it compiles we probably need to support it, at least slightly
znakeeye if I hold down the dot key when typing this I get:
void Foo() throw(..................) {}
I have checked on two different machines, and get the same result on both. And yes, I do have convert dot to -> turned on, I checked
If you create a new, default console project do you still see this problem? I am trying to work out what could be triggering this in such a reliable manor on your machine. |
zen is the art of being at one with the two'ness |
|
|
znakeeye
Tomato Guru
379 Posts |
Posted - Jul 18 2007 : 01:15:20 AM
|
Darn, it does indeed work in a console project. And to make things worse I can't reproduce it in my other project. In this MFC project I'm using this 3rd-party library from Codejock: Xtreme ToolkitPro. I believe I have seen posts here before, related to issues when using this particular library. Perhaps the error is in their code? |
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Jul 18 2007 : 08:11:51 AM
|
Xtreme ToolkitPro rings vague bells, but off hand I don't remember any major problems with this library.
Which IDE are you using? They offer different evaluation packages for different IDE's, so I probably need to download the package for the IDE you are using:
http://www.codejock.com/downloads/ |
zen is the art of being at one with the two'ness |
|
|
znakeeye
Tomato Guru
379 Posts |
Posted - Jul 18 2007 : 4:38:47 PM
|
I actually found it! The problem only occurs if some conditions are forfilled:
CMyClass::~CMyClass()
{
// LUA_API void (lua_close) (lua_State *L);
lua_close(m_state);
}
void CMyClass::Foo() throw(..->
Thus, the sequence of tokens is something like this: 1) Class destructor 2) A call to lua_close() in the destructor, or in a class function below it. 3) Function declaration with throw(...) = BOOM!
I think this could be a general bug that could lead to problems in other cases. It's something about that lua_close() function. The full source can be found at www.lua.org. |
|
|
feline
Whole Tomato Software
United Kingdom
19020 Posts |
Posted - Jul 18 2007 : 5:56:37 PM
|
Thank you for your investigations. I have never heard of or used Lua, so I downloaded version 5.1 tar ball and extracted it locally. I then added the following code to a header file:
#include "C:\\lua-5.1\\src\\lua.h"
class CTestLuaDots
{
CTestLuaDots();
~CTestLuaDots();
void Foo() throw(...);
};
void CTestLuaDots::Foo() throw(...) { }
Note that I have not added Lua to the project include directories, or to the VA stable include directories. Using this test code I am not seeing any problems typing throw(...)
Are you able to reproduce this problem by adding your test code to a test console project. |
zen is the art of being at one with the two'ness |
|
|
|
Topic |
|