В стандарте С++ 11 мы можем объявить переменную необычным способом. Мы можем объявить myVar
как int(myVar);
вместо int myVar
. В чем смысл этого?
#include <iostream>
using namespace std;
int main() {
int(myVar);
myVar = 1000;
cout << myVar << endl;
return 0;
}
UPD На самом деле есть определенная причина, почему я спросил об этом. То, что выглядело невиновным, просто перестало компилироваться, когда мы попытались перенести некоторый код из MSVC С++ 03 в GCC С++ 11. Вот пример
#include <iostream>
using namespace std;
struct MyAssert
{
MyAssert(bool)
{
}
};
#define ASSERT(cond) MyAssert(cond)
void func(void* ptr)
{
ASSERT(ptr); // error: declaration of ‘MyAssert ptr’
// shadows a parameter #define ASSERT(cond) MyAssert(cond)
}
int main()
{
func(nullptr);
return 0;
}