Код: Выделить всё
template
class MyClass final {
public:
static MyClass factoryMethod(TOwner* const a_owner) {
MyClass(a_owner); // Does not compile
//MyClass { a_owner }; // Compiles
}
private:
MyClass(TOwner* const a_owner) :
m_owner(a_owner)
{}
TOwner* m_owner;
};
int main() { return 0; }
Код: Выделить всё
foo.cpp: In static member function 'static MyClass MyClass::factoryMethod(TOwner*)':
foo.cpp:5:17: error: declaration of 'MyClass a_owner' shadows a parameter
5 | MyClass(a_owner); // Does not compile
| ^~~~~~~
foo.cpp:4:48: note: 'TOwner* const a_owner' previously declared here
4 | static MyClass factoryMethod(TOwner* const a_owner) {
| ~~~~~~~~~~~~~~^~~~~~~
Код: Выделить всё
g++ foo.cpp --std=c++17