VJ wrote:
> mlimber wrote:
>> John Goche wrote:
>>
>>> Hello,
>>>
>>> I have come across the following directive but I don't see a class
>>> name specified in front of the ::Check function. Does anyone
>>> know what this means and how the directive is supposed to work?
>>>
>>> #define TEST2(aValue, aExpected) ::Check(aValue, aExpected,
>>> __LINE__)
>>
>>
>>>> Check is a function in the global namespace.
>>
>
> Can it be used for functions in the nameless namespace? Or is it more
> for global functions?
Yes, it can. Unnamed/nameless/anonymous namespace names are inserted
into the scope in which that namespace appears. The way anonymous
namespace
// some scope
namespace {
// some names declared
}
behaves is similar to
// some scope
namespace SomeWeIrD_and_UNIQUEnaME {}
using namespace SomeWeIrD_and_UNIQUEnaME;
namespace SomeWeIrD_and_UNIQUEnaME {
// some names declared
}
(see 7.3.1.1/1); only the weird and unique name is different for
every translation unit and is *not* available to the programmer.
>
> For example:
>
> #include <iostream>
> using namespace std;
>
> namespace
> {
> void f()
> {
> cout<<"222222222222"<<endl;
> }
> }
>
> int main()
> {
> ::f();
> }
>
> This will print 2's
.... As it should.
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask
|