/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
void test1()
{ // expected-error@+1 {{rather use make_shared than constructing from 'int *' [loplugin:makeshared]}}
std::shared_ptr<int> x(newint); // expected-error@+1 {{rather use make_shared [loplugin:makeshared]}}
x.reset(newint); // expected-error@+1 {{rather use make_shared than constructing from 'int *' [loplugin:makeshared]}}
x = std::shared_ptr<int>(newint);
// no warning expected
std::shared_ptr<int> y(newint, o3tl::default_delete<int>());
y.reset(newint, o3tl::default_delete<int>()); // no warning expected, no public constructor
std::shared_ptr<S1> z(new S1);
z.reset(new S1);
// no warning expected - this constructor takes an initializer-list, which make_shared does not support auto a = std::shared_ptr<o3tl::sorted_vector<int>>(new o3tl::sorted_vector<int>({ 1, 2 }));
};
void test2()
{ // expected-error-re@+1 {{rather use make_shared than constructing from {{.*}}'unique_ptr<int>'{{.*}} [loplugin:makeshared]}}
std::shared_ptr<int> x = std::make_unique<int>(1); // expected-error-re@+1 {{rather use make_shared than constructing from {{.*}}'unique_ptr<int>'{{.*}} [loplugin:makeshared]}}
x = std::make_unique<int>(1);
(void)x;
// expected-error-re@+1 {{rather use make_shared than constructing from {{.*}}'unique_ptr<int>'{{.*}} [loplugin:makeshared]}}
std::shared_ptr<int> y(std::make_unique<int>(1));
(void)y;
std::unique_ptr<int> u1; // expected-error-re@+1 {{rather use make_shared than constructing from {{.+}} (aka 'std{{.*}}::unique_ptr<int{{.*}}>') [loplugin:makeshared]}}
std::shared_ptr<int> z = std::move(u1); // expected-error-re@+1 {{rather use make_shared than constructing from {{.+}} (aka 'std{{.*}}::unique_ptr<int{{.*}}>') [loplugin:makeshared]}}
z = std::move(u1);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.