Mark the CompressionOptions(int) constructor explicit A single-argument constructor without explicit allows an int to convert implicitly to CompressionOptions, so an accidental Compress(reader, writer, 2) compiles without complaint. Nothing in the library relies on the conversion.
diff --git a/snappy.h b/snappy.h index 1c44868..11fb8ac 100644 --- a/snappy.h +++ b/snappy.h
@@ -69,7 +69,7 @@ int level = DefaultCompressionLevel(); constexpr CompressionOptions() = default; - constexpr CompressionOptions(int compression_level) + constexpr explicit CompressionOptions(int compression_level) : level(compression_level) {} static constexpr int MinCompressionLevel() { return 1; }