Я бы пошел с 2 или другим вариантом, где возвращаемое значение указывает, было ли это значение найдено.
Кажется, что значение строки, которую функция возвращает (или предоставляет ссылку), уже указывает, было ли найдено значение. Если значение не было найдено, то, по-видимому, нет смысла указывать номер строки, который не содержит значение, поэтому возвращаемое значение должно быть равно -1, или Нуль, или любому другому значению, подходящему для конкретного языка. В противном случае тот факт, что номер строки был возвращен, указывает на то, что значение было найдено.
Таким образом, нет необходимости в отдельном возвращаемом значении, чтобы указать, было ли это значение найдено. Тем не менее, тип 1 может быть уместным, если он соответствует идиомам конкретного языка и способу вызова функций в нем.