Но у меня сразу возникает мысль. Если компоновка имени внешняя, то это значит, что это имя доступно в других единицах трансляции. Однако, как с функциями не работает:foo.cpp ---------- void foo() {} bar.cpp ---------- void foo(); void bar() { foo(); }
То есть я не могу написать так:A.cpp ---------- class A { }; B.cpp ---------- class A; void foo(A a) // A is an incomplete type { }
A.cpp
----------
class A
{
};
B.cpp
----------
class A;
void foo(A& a) // A is an incomplete type, but who cares
{
}
Вопрос: какой смысл тогда во внешней компоновке имени класса?
Если я правильно понимаю статическая переменная класса т.к она находиться на стеке, должна быть у каждого потока своя
std::set<std::shared_ptr<CString>, MyCompare>
using namespace std;
typedef shared_ptr<string> SString;
class SharedLess
{
public:
bool operator() (const SString& a, const SString& b) const
{
return *a < *b;
}
};